Как написать мост 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);
}