第一个JNI程序--调用dll

看到JNI(Java native Interface),发现原来JAVA中竟然可以调用C/C++写的代码,感觉很神奇,就参照网上的资料写了一个JNI的helloWorld程序。

 

1.首先新建一个TXT文件CTestJNI.TXT, 将文件名改为CTestJNI.java,写入以下的代码

2.编译这个文件

执行以下命令

javac CTestJNI.java

 

3.生成头文件CTestJNI.h

执行以下命令

javah CTestJNI

 

生成的CTesetJNI.h的内容应该是

 

Java_CTestJNI_DisplayHelloWorld()这个方法名中,CTestJNI是指调用这个方法的类名,DisplayHelloWorld是CTestJNI类中的对应的native方法。

 

4.生成dll

新建一个TXT 文件,重命名为CTestJNI.c,在这个文件中实现CTestJNI.h中的函数Java_CTestJNI_DisplayHelloWorld()。

 

下面就是生成dll文件了,在cmd中输入以下命令

 

cl -I***/JDK/include -I***/JDK/include/win32 -LD CTestJNI.c -FeCTestJNI.dll

其中***表示的是JDK安装的目录。并且 -I与***/JDK/include,***/JDK/include/win32 之间不能有空格。执行命令后会生成以下文件:

CTestJNI.dll

CTestJNI.lib

CTestJNI.exp

CTestJNI.obj

 

这里可能会遇到一个问题,当运行cl命令时候会弹出下面这个对话框:

 

 

这是因为VC/Bin/下没有“msobj80.dll,mspdb80.dll,mspdbcore.dll,mspdbsrv.exe”这四个文件,

解决的方法:
1>直接从Common7/IDE/下复制这四个文件到VC/Bin/下即可解决
2> 设置环境变量,选择 我的电脑->属性->高级->环境变量->系统变量,在path中添加C:/Program Files/Microsoft Visual Studio 8/Common7/IDE; (这是你VS2005默认安装目录,如果你不是安装在这里,请换成你自己的安装目录);注意结尾最后用“;”隔开!
这样在用cl编译就不会出现mspdb80.dll文件找不到的错误了。

 

5.生成dll后,运行CTestJNI.java

java CTestJNI

可以看到运行结果:C Hello World

 

现在还只是 知其然而不知其所以然,JNI的内容很丰富,继续研究!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值