Как написать мост JNI dll

У меня есть драйвер DLL для использования в моем приложении Java. Я прочитал, что мне нужно создать мост DLL для JNI. Прежде всего я хотел бы знать, существует ли какая-либо утилита для автоматического создания этого моста.

У меня есть исходный код Dll, и я также знаю, как создать свой заголовочный файл моста (javah), но я не могу понять, как поместить в реализацию моста, потому что мне просто нужно вызвать метод драйвера.... Можете ли вы помочь мне?

Например, это заголовок моего драйвера:

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

Я также читал о JNA, кажется, проще, но, может быть, не очень быстро, правда? Спасибо

2 ответа

Решение

JavaCPP так же прост, как JNA, но так же быстр, как и JNI. Например, этот класс Java мог бы обеспечить эффективный доступ к этим четырем функциям в Java, предполагая, что заголовочные и библиотечные файлы имеют имена "Driver.h" и "Driver.lib" соответственно:

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);
}

Я могу предложить вам 2 разные библиотеки, которые облегчают работу с JNI

Другие вопросы по тегам