java jni list_Java通过JNI的方式调用C

1、调用原理

用java的javah命令将java native 方法编译成.h,在C程序中调用此.h文件,并实现.h文件里面声明的方法,编译生成.dll文件,最后java通过System.loadLibrary()加载.dll文件,调用具体的方法实现;

2、具体操作步骤:

1、编译JAVA类

public class TestJNI {

// 加载编译好的.dll文件

static

{

System.loadLibrary( "VsDll" );

}

// 声明调用C的方法名称,注意用native修饰

public native static int cToJava();

// 测试是否配置成功

public static void main(String[] args) {

System.out.println(cToJava());

}

}

2、执行生成.h文件的命令

// 进入cdm,cd 到项目目录

// 生成.class文件

javac TestJNI.java

// 生成.h文件

javah TestJNI

// 生成文件如下:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include

/* Header for class TestJNI */

#ifndef _Included_TestJNI

#define _Included_TestJNI

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: TestJNI

* Method: cToJava

* Signature: ()I

*/

JNIEXPORT jint JNICALL Java_TestJNI_cToJava

(JNIEnv *, jclass);

#ifdef __cplusplus

}

#endif

#endif

3、在Visual Studio中创建VsDll项目

1、创建dll项目参考:http://jingyan.baidu.com/article/ff411625ad116612e48237a4.html

2、新建一个.cpp文件

#include "jni.h"

#include "TestJNI.h"

JNIEXPORT jint JNICALL Java_TestJNI_cToJava

(JNIEnv *, jclass){

return 1;

}

4、将生成的.dll文件拷贝到java项目下

// 配置.dll文件访问路径,以idea为例

// 在项目路径下新建一个lib文件夹将生成的.dll文件拷贝到此文

//件夹下面,并在VM中配置此参数:

-Djava.library.path=E:\javaProject\lib

3、注意事项

1、需要将java安装目录下**\Java\jdk1.8.0_60\include 里面的jni.h ,以及**\Java\jdk1.8.0_60\include\win32目录下的jni_md.h拷贝到vs项目的目录下

2、修改生成的TestJNI.h文件里面对jni.h的引用形式为: #include "jni.h",

3、修改在.cpp文件里面对jni的引用格式也为:#include "jni.h"

4、注意VS的编译器和JDK的编译要对应,比如: VS用x64,JDK是64位的,如果VS是32,JDK是64,则需要修改VS的 解决方案平台,具体参考:http://blog.csdn.net/zhounanzhaode/article/details/50322841

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值