Я успешно скомпилировал свою библиотеку на Linux и Mac и использовал ее с Java Native Access. К сожалению, ничего, что я делаю, похоже, не работает с компилятором Visual Studio и Java Native Access.
Я возвращаюсь к основам и пытаюсь создать в Visual Studio супер простой dll, с которым будет работать Java Native Access, любая помощь будет оценена.
Вот GimmeFiveDll.c:
__declspec(dllexport) int gimmeFive()
{
return 5;
}
Вот SystemLibrary.java:
import com.sun.jna.Native;
public class SystemLibrary {
public static final SystemLibrary instance = new SystemLibrary();
static {
Native.register("GimmeFiveDll");
}
public native int gimmeFive();
}
Я уже пытался переключить интерфейс вызова на стандартный вызов в Visual Studio. Я не вносил никаких других изменений из настроек по умолчанию в пустой проект dll win32 консоли мастера нового проекта.
В приведенном выше примере полученный dll даже неправильно экспортирует функцию в соответствии с dumpbin.exe /exports
. Мой реальный проект экспортирует их правильно, но в любом случае я всегда получаю одно и то же исключение JNA:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'GimmeFiveDll': The specified module could not be found.
(Да, я поместил GimmeFiveDll.dll в System32. Да, я могу использовать JNA для доступа к другим библиотекам в System32, которые поставляются с Windows).
Кто-нибудь хочет помочь мне завершить этот минималистский пример библиотеки DLL, созданной Visual Studio, которая нравится JNA?
Большое спасибо.