JAVA+VS生成调用dll

主要有两种方式JNI和JNA()

JNI方式

1.将C程序打包成dll文件(windows环境霞)或者.so文件(Linux环境下)

window环境下

参考:Windows下Idea+vs2019开发JNI - 知乎

步骤如下:

步骤1.通过java生成.h头文件

方法一:通过命令直接生成

javac 类名.java//编译成.class文件
javah 类名 //生成头文件.h .javah的命令是:javah -classpath 文件所在的包的上一级目录 包名+类名
//例子 需要注意的是javac生成的.class文件最好不要和.java在一个文件夹中
>javac  JNIFallAlgorithm.java
>javah -classpath E:\gitee\fall\fall-detection\src\main\java com.dlxx.falldetection.util.JNIFallAlgorithm

 

方法2:通过idea配置

构建项目以生成.class文件
生成.h文件
这里使用idea的external tool(外部工具)功能,打开全局设置依次展开 工具(tools)->外部工具(external tools)

点击上方加号以添加一个外部工具,如下配置:

工具设置中的内容:

程序:$JDKPath$\bin\javah

参数:-classpath $OutputPath$ -d ./jni $FileClass$

然后确定

回到目录浏览,右键刚刚创建的JNISayHello.java,如此运行一遍即可在项目目录下的Jni目录找到生成的.h文件

步骤2:在VS中配置

1.打开VS新建一个动态链接库项目 

2.接下来修改一些设置以便能正常编译dll

2.1打开解决方案属性,在调试界面加入命令行参数–kill-at,否则无法正常调用dll

2.2为了使目录整理,配置C/C++下的预处理器信息改为不使用预编译头

2.3在VC++界面编辑“包含目录”后面加上$(JAVA_HOME)\include;$(JAVA_HOME)\include\win32
   以便编译时能找到jdk提供的jni.h jni_md.h
   
2.4如果要编译在64位平台上使用的dll,把此处改为x64,否则会在调用时产生异常

3.接下来把idea中生成的.h文件拷贝到头文件目录
**  注意:要使用windows文件管理器打开到jni目录,再复制文件到vs创建的项目目录下**
  接下来在vs中右键”头文件”筛选器,选择”添加”->”现有项”
**  注意:如果不是从文件管理器复制粘贴会导致编译时找不到文件**
  接着右键”源文件”筛选器,点击”添加项”
  
4.如此创建一个新的cpp文件
  打开test_JNISayHello.h文件,复制这个函数声明到刚刚创建的cpp文件
  **注意:记得添加形参env和cls,记得在文件头声明include**
  可以在此函数中写一些代码测试
  点击运行按钮进行生成dll
  
5.根据命令行输出找到dll文件复制到idea项目目录

右键你的项目名称然后点击粘贴
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值