如何编写JNI dll桥

时间:2012-04-16 11:44:47

标签: java dll java-native-interface jna

我有一个在我的Java应用程序中使用的DLL驱动程序。 我读到我需要为JNI创建一个dll桥。首先,我想知道是否存在一些可以自动修复这座桥的实用工具。

我有Dll的源代码,我也知道如何修改我的桥头文件(javah),但我无法理解如何进入桥实现,因为我只需要调用驱动程序方法.... 你能救我吗?

例如,这是我的驱动程序的标题:

BOOL CALLINGCONV IsInitialized();
int  CALLINGCONV Initialize(int Slot);
int  CALLINGCONV Finalize();
int  CALLINGCONV FinalizeML(int nSlot);

我也读过关于JNA的内容,它似乎更容易但也许不是很快,是真的吗? 哎呀

2 个答案:

答案 0 :(得分:0)

我可以建议您使用2个不同的库,以便更轻松地使用JNI

答案 1 :(得分:0)

JavaCPP和JNA一样简单,但和原始JNI一样快。例如,假设头文件和库文件分别命名为“Driver.h”和“Driver.lib”,这个Java类可以高效地访问Java中的这四个函数:

import com.googlecode.javacpp.*;
import com.googlecode.javacpp.annotation.*;

@Platform(include="Driver.h",link="Driver")
public class Driver {
    static { Loader.load(); }
    public static native @Cast("BOOL") boolean IsInitialized();
    public static native int Initialize(int Slot);
    public static native int Finalize();
    public static native int FinalizeML(int nSlot);
}