
新建Java项目,这里使用gradle构建项目,结构如下:

引入jna依赖
1 | compile group: 'net.java.dev.jna', name: 'jna', version: '5.4.0' |
vs2019创建DLL项目(具有导出功能的DLL项目),如下



主要关注HelloWorld.cpp、HelloWorld.h这两个文件
默认的项目为我们导出了3个示例代码
HelloWorld.cpp
1 | // 这是导出变量的一个示例 |
HelloWorld.h
1 | // 此类是从 dll 导出的 |
测试下默认导出的DLL代码,注意生成项目时要根据自己jdk的版本选择生成的dll位数。
这里是64位的dll,如下


下面将生成DLL文件复制到我们的Java项目中

自定义一个add方法HelloWorld.cpp
1 | HELLOWORLD_API int add(int a, int b) { |
导出add方法HelloWorld.h
1 | extern "C" HELLOWORLD_API int add(int a, int b); |
Java调用cpp代码
1 | public class JnaSampleTest { |
注意dll的路径问题,linux平台下位.so文件
Native.load(“HELLOWORLD”, HelloWorld.class)会自动去项目的src/main/resources文件夹下寻找系统对应的dll和so。
(根据com.sun.jna.Platform类对应文件夹名)如下: