我已经在 Linux 和 Mac 上成功编译了我的库,并将其与 Java Native Access 一起使用。不幸的是,我所做的一切似乎都不适用于 Visual Studio 的编译器和 Java Native Access。
我将回到基础并尝试在 Visual Studio 中创建一个可以使用 Java Native Access 的超级简单的 dll,任何帮助将不胜感激。
这是 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 中将调用接口切换为 stdcall。我没有对新项目向导的空项目 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 访问 Windows 附带的 System32 中的其他 dll)。
有人愿意帮我完善这个 JNA 喜欢的由 Visual Studio 创建的 dll 的极简示例吗?
非常感谢。