首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Jni调用本地方法有关问题

2012-01-31 
Jni调用本地方法问题有一个tcclib.dll文件,包含这么一个方法,13. about()說明: 顯示DLL 版本號碼參數: 無

Jni调用本地方法问题
有一个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");
}
}

这样对么?

[解决办法]
好像是没有后缀的, 加上后缀代码就没有移植性了,因为不同平台的动态链接库后缀不同。
把dll放在和class一起的目录下,
System.load("tcclib");
就可以了。
[解决办法]
tcclib
[解决办法]
如果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中查找并自动根据操作系统添加后缀名称

[解决办法]
4楼说的有道理。别人给你的dll是不能直接用的。要先编写一个dll作为桥梁

热点排行