JNA的GITHUB下载地址:https://github.com/java-native-access/jna
将下载的jna-5.3.1.jar和jna-platform-5.3.1.jar导入Java项目中
我们示例在C++/C语言生成的DLL文件代码:
extern "C" __declspec(dllexport) int add(int a, int b);
int add(int a, int b){
return a + b;
}
add函数为JAVA要调用的函数,要对add函数之前做extern "C" __declspec(dllexport)声明。
同时生成的DLL位数要与JAVA虚拟机的位数保持一致(X64对于X64位,X86对应X86)
如果位数不一样,会报出如下错误:
在JAVA端的代码如下图所示:
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface TestJNA extends Library {
public abstract float add(float a,float b);
TestJNA INSTANCE = (TestJNA) Native.loadLibrary("C_Part", TestJNA.class);
}
public class TEST {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(TestJNA.INSTANCE.add(2,2));
}
}
TestJNA INSTANCE = (TestJNA) Native.loadLibrary("C_Part", TestJNA.class);为加载DLL链接库,“C_Part.dll”放置在工程文件的根目录下。
运行main函数,运行结果如下:
代码GITHUB源码链接:https://github.com/XiaoYaoNet/JNA