Jni调用本地方法问题

mQney 2009-12-17 12:09:44
有一个tcclib.dll文件,

包含这么一个方法,
13. about()
說明: 顯示DLL 版本號碼
參數: 無



我想使用Jni调用这个本地方法,写了一个java类

public class TccPrint{
public static void main(String[] args){
new TccPrint().about();
}
public native void about();
static{
System.load("D:/tcclib.dll");
}
}

这样对么?
...全文
65 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
txzsp 2011-11-11
  • 打赏
  • 举报
回复
给LZ推荐一个JNI的使用,有源码和大量注释,LZ一定要试下:
http://download.csdn.net/detail/txzsp/2285294
999朵玫瑰 2009-12-17
  • 打赏
  • 举报
回复
tcclib
nj_dobetter 2009-12-17
  • 打赏
  • 举报
回复
好像是没有后缀的, 加上后缀代码就没有移植性了,因为不同平台的动态链接库后缀不同。
把dll放在和class一起的目录下,
System.load("tcclib");
就可以了。
mQney 2009-12-17
  • 打赏
  • 举报
回复
谢了各位。
bayougeng 2009-12-17
  • 打赏
  • 举报
回复
不用load,在eclipse里设置代码的native library目录就行了。
小梁_unique 2009-12-17
  • 打赏
  • 举报
回复
4楼说的有道理。别人给你的dll是不能直接用的。要先编写一个dll作为桥梁
ChDw 2009-12-17
  • 打赏
  • 举报
回复
如果tcclib.dll是一个别人提供给你的Dll文件,那么你不能直接Jni调用

Java对Jni方法的命名是有要求的,你应该先写

public class TccPrint{
public static void main(String[] args){
new TccPrint().about();
}
public native void about();
static{
// System.load("D:/tcclib.dll"); 先注释它了
}
}
编译再用javah TccPrint生成的.h文件实现其中的方法编译一个新的dll,在这个dll中才去调用第三方提供的Dll

这时候你再增加上面的System.load("tcclib");不需要路径,不需要后缀,Java会在Path中查找并自动根据操作系统添加后缀名称

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧