【转载整理】eclipse 开发c/c++、Java使用JNI调用C程序、生成64位dll动态链接库
2017-11-24 09:32
1156 查看
一、eclipse安装CDT组件
二、安装windows环境下的C/C++编译器MinGW
https://pan.baidu.com/s/1kVP65Jx(适用于windows 32/64系统、若从事C/C++,请重新下载安装!该MinGW只能生成64位的dll,解压,配置系统环境变量即可)环境变量:
D:\mingw\bin;
D:\mingw\libexec\gcc\x86_64-w64-mingw32\4.9.2;
三、建一个C项目,开始配置
配置编译器MinGW连接配置生成的dll属性
点击OK!!!
项目Build工程,即可生成dll。
四、Java使用JNI调用C程序
JNI原理开始使用JNI
package kg.tom; public class MyJni { //使用JNI的关键字native //这个关键字决定我们那些方法能在我们的C文件中使用 //只须声明,不必实现 public native void display(); public native double sum(double x,double y); //这个是到时候调用我们写好的C文件 //现在用不上 //static { // System.loadLibrary("sum"); //} public static void main(String[] args) { //到时候测试用方法现在用不上 //new MyJni().display(); //System.out.println(new MyJni().sum(2.0, 3.0)); } }
使用cmd
类转换成.class文件
把.class文件转换成头文件,成功的话就会在src目录下看到.h文件了
打开生成的.h文件
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class kg_tom_MyJni */ #ifndef _Included_kg_tom_MyJni #define _Included_kg_tom_MyJni #ifdef __cplusplus extern "C" { #endif /* - Class: kg_tom_MyJni - Method: display - Signature: ()V */ JNIEXPORT void JNICALL Java_kg_tom_MyJni_display (JNIEnv *, jobject); /* - Class: kg_tom_MyJni - Method: sum - Signature: (DD)D */ JNIEXPORT jdouble JNICALL Java_kg_tom_MyJni_sum (JNIEnv *, jobject, jdouble, jdouble); #ifdef __cplusplus } #endif #endif
native方法名称转换详解:
C文件
//必须的头文件jni.h #include <jni.h> //导入我们需要实现的本地方法 #include "kg_tom_MyJni.h" #include <stdio.h> JNIEXPORT void JNICALL Java_kg_tom_MyJni_display (JNIEnv *env, jobject obj) { printf("Hello World tom!!"); return; } JNIEXPORT jdouble JNICALL Java_kg_tom_MyJni_sum (JNIEnv *env, jobject obj, jdouble a, jdouble b) { return a + b; }
用eclipse把编译好的dll放到项目根目录,注意不是代码根目录
JNI映射的数据类型
声明:以上内容是本人搜集的资料,后经测试可用,特整理以待备用。
参考:
https://www.cnblogs.com/youxilua/archive/2011/09/16/2178554.html
http://blog.csdn.net/csdncqmyg/article/details/53170548
http://www.360doc.com/content/17/1009/15/33093582_693492128.shtml
相关文章推荐
- Java使用JNI调用C/C++的DLL动态链接库2
- Java使用JNI调用C/C++的DLL动态链接库1
- [2014.1.31] Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)
- JAVA使用JNI调用C++动态链接库
- [2014.1.31] Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)
- Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)
- PB8调用使用C++与C#分别编写生成解压缩带有密码的zip压缩文件的动态链接库dll(部分内容转自互联网)
- JAVA使用JNI调用C++动态链接库
- Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)
- 【JNI调用DLL动态库】Java使用JNI调用DLL动态链接库学习记录
- java使用JNI调用C++代码(vs2010生成dll文件)
- [JNI] Eclipse直接完成JAVA调用C/C++ (Eclipse上使用CDT结合MinGW)
- [JNI] Eclipse直接完成JAVA调用C/C++ (Eclipse上使用CDT结合MinGW)
- Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- 使用JNI技术实现JAVA程序调用dll
- Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
- Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
- Windows 下java调用C++ dll动态链接库
- windows7下,Java中利用JNI调用c++生成的动态库的使用步骤