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作为桥梁