【发布时间】:2010-04-15 02:26:52
【问题描述】:
我是 JNI 的新手。还有几个问题: JNI 可以处理 Windows 中存在的每种类型的 dll 吗?我想链接一个库,但它给了我错误。是不是JNI和dll不兼容?
摘自 VB .NET(有效)
Private Declare Function ConnectReader Lib "rfidhid.dll" () As Integer
Private Declare Function DisconnectReader Lib "rfidhid.dll" () As Integer
Private Declare Function SetAntenna Lib "rfidhid.dll" (ByVal mode As Integer) As Integer
来自 Java 的完整代码
公共类 MainForm {
/**
* @param args
*/
public native int ConnectReader();
public static void main(String[] args) {
// TODO Auto-generated method stub
MainForm mf = new MainForm();
System.out.println(mf.ConnectReader());
}
static {
System.loadLibrary("rfidhid");
}
}
显示错误代码
Exception in thread "main" java.lang.UnsatisfiedLinkError: MainForm.ConnectReader()I
at MainForm.ConnectReader(Native Method)
at MainForm.main(MainForm.java:13)
谁能指出我可能做错的地方?
编辑:
原来我应该这样做(而且有效)
import com.sun.jna.Library;
import com.sun.jna.Native;
public class HelloWorld {
public interface MyLibrary extends Library {
public int ConnectReader();
}
public static void main(String[] args) {
Kernel32 lib = (MyLibrary) Native.loadLibrary("rfidhid", MyLibrary.class);
System.out.println(lib.ConnectReader());
}
}
【问题讨论】:
标签: java dll java-native-interface