java调用c++生成的dll
来源:互联网 发布:长寿行知计算机老师 编辑:程序博客网 时间:2024/06/05 09:53
最近在做的java项目中,有一段功能需要用c++实现,并生成dll,继而在java项目中得以调用。网上有很多类似教程,但是经过本人实践,大多报错,也在这上面浪费了蛮久的时间,最后终于搞定!因此在这里记录操作步骤,一方面给他人提供资料,另一方面也便于自己在下次遇到同样问题时,回头查阅。
第1步 创建Java工程,命名DllTest,创建一个包com.DT.DLL,并在包中添加DllTest.java
第2步 在DllTest.java类中添加native方法
2
3
4
5
package com.DT.DLL;
public class DLLTest {
public native static void set(int i);
public native static int get();
}
public class DLLTest {
public native static void set(int i);
public native static int get();
}
第3步 使用javah命令生成头文件
执行cmd命令,先进入项目的src目录;
在src目录下执行如下javah命令(黄色部分代表包名),生成 com_bk_jnidemo_JniDemo.h 头文件
执行完毕后刷新项目,可以看到生成了com_DT_DLL_DLLTest.h头文件:
内容如下:
Code
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_DT_DLL_DLLTest */
#ifndef _Included_com_DT_DLL_DLLTest
#define _Included_com_DT_DLL_DLLTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_DT_DLL_DLLTest
* Method: set
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_com_DT_DLL_DLLTest_set
(JNIEnv *, jclass, jint);
/*
* Class: com_DT_DLL_DLLTest
* Method: get
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_DT_DLL_DLLTest_get
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
#include <jni.h>
/* Header for class com_DT_DLL_DLLTest */
#ifndef _Included_com_DT_DLL_DLLTest
#define _Included_com_DT_DLL_DLLTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_DT_DLL_DLLTest
* Method: set
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_com_DT_DLL_DLLTest_set
(JNIEnv *, jclass, jint);
/*
* Class: com_DT_DLL_DLLTest
* Method: get
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_DT_DLL_DLLTest_get
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
第4步 将jdk中的jni.h、jni_md.h拷贝到VS安装目录下的VC\include文件夹下
其中jni.h在jdk的include目录下
jni_md.h在jdk的include\win32目录下
第5步 创建DLL项目
创建后生成的DLLTest.cpp默认如下:
第6步 替换头文件并实现方法
用com_DT_DLL_DLLTest.h中的内容,拷贝替换掉DLLTest.h中的内容
根据上一步更新的DLLTest.h中定义的函数,改写DLLTest.cpp,实现定义的方法:
第7步 生成dll
选择Release之后,在配置管理器中新建平台X64.
格外注意:如果开发java项目的机器上没有装VS,右键项目->属性->c/c++->代码生成->运行库中删掉(留白)/MD,如下图:
第7步 生成dll
点击调试生成dll
将DLLTest.dll拷贝到java项目和src同级的目录下
修改DLLTest.java后成功调用
0 0
- Java调用C/C++代码-生成java调用的DLL
- JAVA技巧(Java中调用C/C++生成的DLL)
- JAVA中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- C#Dll的生成与调用
- c#调用C/C++生成的dll
- C#dll的生成和调用
- C/C++ DLL的生成与调用
- java调用c++生成的dll
- [Java]Java中调用C/C++生成的DLL(转) (2007-05-16 23:51:44)
- JAVA 与C++ 混合编程 Java中调用C/C++生成的DLL(转)
- JAVA 与C++ 混合编程 Java中调用C/C++生成的DLL
- c++dll生成和调用
- C生成Dll并调用
- 0072 JAVA JNI 如何调用C或者C++生成的dll【基础】
- java调用C/C++生成的dll动态链接库----借助JNI
- 裴蜀定理详解
- linux通过cifs访问windows的共享文件
- 在Xcode8.0下、手动安装iOS 9.3 的模拟器
- app版本更新
- Java 中的定时任务:Timer基础 Timer的缺陷 ScheduledExecutorService优势
- java调用c++生成的dll
- es修改mapping类型
- 卡尔曼滤波的原理说明
- PowerDesigner教程系列
- React中prop和state的区别
- Linux非root用户如何使用80端口启动程序
- 禁止ViewPager的滑动
- WebService使用代理类调用远程接口
- 遗传算法及C++实现