一、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