JNI初次实验

本文介绍了一个具体的Java调用DLL文件的例子。首先通过编写Java类声明native方法并加载DLL库,接着使用javah生成.h头文件,随后在VC6中创建DLL工程并将Java头文件与实现代码整合,最后完成DLL的编译并由Java程序调用。

按照网上搜索帖子的步骤:

1.编写Java类文件testdll.java(E:/zhs),声明两个native方法,并且有主函数:

public class testdll { static{ System.loadLibrary("goodluck"); //不写扩展名,名字要与dll的文件名一致 } public native int getValue();//声明两个native方法之一 public native void setValue(int i);//之二 public static void main(String[] args) {//有主函数 testdll test=new testdll(); test.setValue(10); System.out.println(test.getValue()); } }

2.生成.h头文件。在命令行编译testdll.java.然后用javah命令生成testdll.h.

注意:由于在命令行,要正确设置classpath,%JAVA_HOME%/lib/tools.jar 和dt.jar,不能只到lib,否则报错。

到E:/zhs,键入

javac testdll.java

javah testdll

生成testdll.h

OK!

3.创建vc6的dll工程testdll。把头文件testdll.h引入工程,建立新的cpp源程序,代码如下:

注意:

把testdll.h考到工程文件夹,然后include。

下面的两个头文件jni.h和jni_md.h来自jdk的安装目录下include文件夹(jni.h)和其下的win32文件夹(jni_md.h)。但是把他们考到工程文件夹下再include报错,必须要拷贝到vc6安装目录下:C:/Program Files/Microsoft Visual Studio/VC98/Include

#include "testdll.h" #include "jni.h" #include "jni_md.h" int i=0; JNIEXPORT jint JNICALL Java_testdll_getValue (JNIEnv *, jobject){ return i; } JNIEXPORT void JNICALL Java_testdll_setValue (JNIEnv *, jobject, jint j){ i=j; }

编译,构建,在vc6/testdll/Debug下会生成testdll.dll的文件。

注意:不能点击红叹号(执行),也不必点击。

4.拷贝testdll.dll到E:/zhs下,改名为第一步(1)中所引用的【System.loadLibrary("goodluck"); 】中的goodluck.dll。执行

java testdll

即调用了这个dll。输出的是10.

OK!

时间匆忙,记以备忘。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值