Java调用dll文件

近期根据C++做了一个图片质量检测的项目,目前需要在在java中进行调用,所以先在C++上生成dll文件,然后基于java调用dll文件实现功能。

环境:

C++:VS2017(之前配置opencv真是要了老命)

java:idea2020+jdk1.8。

注意:jdk安装的时候小心点,path路径容易点编辑,千万别新建,会覆盖的。

在这里插入图片描述
接下来进入正文

1. 创建Java项目,假设定义HelloWorld函数,其中“winproject1”是等会要调用的dll文件,现在进入cmd并cd到当前目录下面,然后javah -jni HelloWorld.HelloWorld,这样会在目录下面生成一个HelloWorld_HelloWorld.h。等会需要将这个头文件移到之前安装jdk目录里的include下面,如:D:%你的路径%\Java\include。

在这里插入图片描述
在这里插入图片描述

2. 打开vs2017,创建一下新的控制台项目,然后需要配置项目包含目录的路径,将下面两个路径加进去,保险点还可以在附加目录里面加上这些路径。vs2017中编写上面头文件中的代码:

JNIEXPORT void JNICALL Java_HelloWorld_HelloWorld_sayHello (JNIEnv *, jobject, jstring, jstring, jstring, jstring) { cout<<"hello world!"<<endl; }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**注:**其中#include "single_check.h"就是我定义检测函数的头文件,在下面的函数中可以调用自己定义的函数,从而让java执行里面的内容,可以调用函数。

3.生成第一步中提到的winproject1.dll文件,直接点击生成-生成解决方案,便可以在项目路径(%项目名%\x64\Debug\winproject1.dll)中找到dll文件,并且复制到jdk安装路径的bin文件夹下(D:%你的路径%\Java\bin\)
4.最后一步最简单啦,在java里面直接run就行啦。最后看一下结果!完美!

在这里插入图片描述
在这里插入图片描述
这是windows下用java调用dll文件,接下来要实现跨平台调用,得在linux下用java可以实现改功能。头秃啊

本文参考了这篇博客,写的特别不错。
添加链接描述


版权声明:本文为favorxin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。