JNI的使用

1、JNI调用C/C++程序(dll方式)

a)详细步骤

i.新建一个javaproject,命名为JNITest

ii.new一个packagecom.jthink

iii.在这个包中新建一个class,命名为Demo,修改Demo.java如下:

packagecom.jthink;

publicclassDemo{

static{

//System.loadLibrary("Demo");

//System.loadLibrary("jniDll");

}

publicnativevoidsayHello();

publicstaticvoidmain(String[]args){

//System.out.println(System.getProperty("java.library.path"));

newDemo().sayHello();

}

}

iv.编译所编写的java类

1.直接用eclipse编译(右击项目,runas->javaapplication)

2.打开工作空间中的项目JNITest,进入bin\com\jthink查看是否生成了Demo.class,如果有则表明编译成功

v.生成C/C++头文件

1.打开一个cmd,首先进入工作空间,依次打指令cdbinjavahcom.jthink.Demo

2.进入bin目录发现生成com_jthink_Demo.h说明生成成功


vi.生成dll库

1.使用VS2008创建一个项目

项目类型选择Win32,模板选择Win32项目,输入名称Demo和位置,单击确定

2.点击下一步

3.选择dll,附加选项中勾选“空项目”,然后点击完成

4.创建c文件testjni.c

#include<stdio.h>

#include"com_jthink_Demo.h"

JNIEXPORTvoidJNICALLJava_com_jthink_Demo_sayHello(JNIEnv*env,jobjectobj){

printf("helloworld\n");

}

5.拷贝java安装文件(C:\ProgramFiles\Java\jdk1.6.0_21\include)include下面的jni.h和include/win32(C:\ProgramFiles\Java\jdk1.6.0_21\include\win32)下面的jni_md.h以及刚刚生成的头文件com_jthink_Demo.h到项目中去,路径为:workspace\Demo\Demo这个文件夹下面,跟有个文件后缀为.user的同级

6.编译这个项目得到dll,右击解决方案->重现生成解决方案,在G:\qjc\C++\Demo\Debug生成dll文件

vii.拷贝刚刚那个dll到项目中,和src文件夹同级(或者放到system32中供调用,还有种办法是放到某个文件夹中,将这个路径加入到环境变量中)

viii.Java调用dll动态链接库

packagecom.jthink;

publicclassDemo{

static{

System.loadLibrary("Demo");

//System.loadLibrary("jniDll");

}

publicnativevoidsayHello();

publicstaticvoidmain(String[]args){

//System.out.println(System.getProperty("java.library.path"));

newDemo().sayHello();

}

}

ix.运行结果:

你可能感兴趣的:(jni)