java调用dll(JNI的使用)

标题:浅谈JNI的使用--java调用dll(原创)2008-06-13 11:36:04
    什么是JNI?Java Native Interface(Java本地接口)的简写。使用这个接口,
可以轻松实现java对动态链接库Dynamic Link Library(dll)文件的调用,
以实现一些C/C++的功能

一、建立java文件
注意点:1.要对dll里面的方法做本地声明
                2.加载dll
示例代码:testdll.java


二、编译
javac testdll.java                   ------如果没有错,进行下一步
javah testdll                           ------生成testdll.h这个头文件

三、实现步骤一中声明的方法
打开VC++6.0,建立一个dll空工程(选win32 Dynami-Link Library)
工具---->选项---->Directories(添加目录C:/jdk/INCLUDE C:/jdk/INCLUDE/WIN32)
新建testdll.h导入工程中,新建一个test.cpp源文件
打开testdll.h粘贴已经生成的代码,发现里面有两个方法:

JNIEXPORT jint JNICALL Java_testdll_getValue
  (JNIEnv *, jobject);

JNIEXPORT void JNICALL Java_testdll_setValue
  (JNIEnv *, jobject, jint);

JNIEXPORT不用管,第二个单词jint/void是返回值,jint相当于int类型,JNICALL不用管,每一个方法名前都有前缀Java_testll_,前两个参数JNIEnv *和jobject不用管,第二个方法的第三个参数jint就是java文件里的int i。
上面有声明了,现在就要实现这两个方法,把代码补充进来吧:)
test.cpp示例代码:


四、编译
此时编译会出现error,主要是提示找不到jni.h(这个包含在testdll.h)里,需要我们把jni.h、jni_md.h复制到C:/Program Files/Microsoft Visual Studio/VC98/Include这个目录里(默认安装目录,如果安装VC不是这个目录,请自行找到Include目录)。
jni.h------------------jdk安装目录/include
jni_md.h------------jdk安装目录/include/win32
然后再编译,构建,就有了test.dll这个动态链接库文件了,把它重命名成goodluck.dll,然后复制到testdll.java的目录下,运行吧:)
java testdll
结果:
10
如果想在eclipse下进行程序调试则需:

设置JVM的搜索路径,使其能够找到你的dll。JVM的搜索路径由java.library.path系统属性决定,其默认值为系统环境变量中的PATH内容。因此,可以通过修改PATH变量来达到设置java.library.path属性的目的(改变之后Eclipse需要重新启动),一般的方法是在PATH中加入dll所在文件夹的绝对路径。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值