Java通过JNI调用C++动态链接库(第三方库)实现全过程Demo | 您所在的位置:网站首页 › java调用dll函数 › Java通过JNI调用C++动态链接库(第三方库)实现全过程Demo |
文章目录
步骤(思路)1.创建C++动态链接库(DLL)1.1新建动态链接库1.2配置动态链接库
2.创建C++中间件(动态链接库)2.1创建中间件2.2配置中间件
3.Java调用C++动态链接库(第三方库)3.1新建一个空项目(省略)3.2配置Java项目
4.源代码
步骤(思路)
1、创建c++动态链接库,实现一些功能的封装,例如扫描设备,作为第三方库来使用 2、创建c++中间件(本质也是DLL),用来调用和进一步的封装第三方库,添加一些业务逻辑等 3、创建一个java项目,用于调用C++动态链接库(第三方库)的功能 1.创建C++动态链接库(DLL) 1.1新建动态链接库1、打开visual studio,创建新项目,选择动态链接库(DLL),点击下一步 3、右键源文件,选择添加->新建项 WindowsHidUsb.h #pragma once #include "pch.h" API_DLL int scanDevice();WindowsHidUsb.cpp #include "WindowsHidUsb.h" #include "pch.h" API_DLL int scanDevice() { return 2; }6、右键项目,点击生成 创建步骤同上,项目名称为MtkHidUsbBridge,添加一个名为MtkHidUsbBridge的cpp文件 2.2配置中间件1、右键项目,点击属性 2、VC++目录-包含目录-编辑 (2)WindowsHidUsb.h头文件,其中将相对路径替换成自己的相对路径即可 #pragma once #if defined(WIN32) #if defined(DEBUG) #pragma comment(lib,"../../MtkHidUsb/x64/Debug/MtkHidUsb.lib") #pragma message("完成与MtkHidUsb.lib的连接") #else #pragma comment(lib,"../../MtkHidUsb/x64/Release/MtkHidUsb.lib") #pragma message("完成与MtkHidUsb.dll的连接") #endif #endif // defined(WIN32) int scanDevice();5、右键项目,点击生成,生成目录如下,先记住,下一步会用到 创建过程,无脑next即可(有手就行) 3.2配置Java项目1、在com.mtk.api.usb的文件夹下,右键新建一个MtkUsbJNI.java类,如下 package com.mtk.api.usb;//与自己的文件夹结构对应 class MtkUsbJni { native int scanDevice(); }2、打开dos窗口,找到java项目的src目录下,在地址栏输入cmd回车即可,输入以下命令 javah -jni -encoding UTF-8 com.mtk.api.usb.MtkUsbJNI其中,com.mtk.api.usb.MtkUsbJNI为你java项目下MtkUsbJNI类的实际包路径 6、在com.mtk.test包下,新建一个测试类 package com.mtk.test; import com.mtk.api.usb.MtkUsb; public class MtkHidUsbTest { public static void main(String[] args) { System.loadLibrary("MtkHidUsb"); System.loadLibrary("MtkHidUsbBridge"); System.out.println("Device Count=" + MtkUsb.getInstance().scanDevice()); } }6、将上边生成的两个动态链接库,MtkHidUsbBridge.dll和MtkHidUsb.dll拷贝到java的根目录下,右键运行即可 点这里 |
CopyRight 2018-2019 实验室设备网 版权所有 |