我正在尝试使用System.LoadLibrary()
使用我用 C++ 编写的一个简单的 dll。
UseDllInJava.java:
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.NativeLong;
import com.sun.jna.Platform;
import com.sun.jna.*;
/**
* Created by Amit Baz on 06/06/2016.
*/
public class UseDllInJava {
static{
System.loadLibrary("SimpleDll");
}
public native static void HelloFromCPP();
public static void main(String[] args){
HelloFromCPP();
}
}
这是dll:
简单DLL文件
#pragma once
namespace SimpleDll
{
class MyFunctions
{
public:
static __declspec(dllexport) void HelloFromCPP();
};
}
简单Dll.cpp:
#include "SimpleDll.h"
#include <stdio.h>
#include <iostream>
using namespace std;
namespace SimpleDll {
extern "C" {
void MyFunctions::HelloFromCPP() {
cout << "Hello from cpp" << endl;
}
}
}
我还添加了变量
-Djava.library.path="Path\To\SimpleDll" 到 Intellij 运行配置中的 VM 选项。
但是当我运行该程序时,它返回错误:
线程“main”java.lang.UnsatisfiedLinkError 中出现异常:
UseDllInJava.HelloFromCPP()V
EDIT
现在可以了!
我从本教程中得到了帮助:https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html
我也不知道 JNI 命名约定是Java_<Package_name>_<Class_name>_<Function_name>
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)