让JNA与第三方DLL接口的诀窍是什么?

时间:2011-08-02 12:41:56

标签: java jna

尝试与Magtek 32位DLL接口时出现以下错误。

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Unable to load library 'MCPAPI': The specified module could not be found.

我在同一代码中与user32.dll连接没问题(只需调整DLL名称和界面)。似乎表明无法找到DLL,但它绝对是在我的jna.library.path中。我甚至将其转移到user32旁边的Windows系统目录中,但没有成功。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

jna.library.path只会影响直接引用的库的加载。必须在与显式加载的目录相同的目录中找到从属库,或者在PATH中找到它们。

要使您的示例正常工作,MCPAPI必须位于jna.library.path或PATH中,并且其依赖库必须位于同一目录或PATH中。

答案 1 :(得分:0)

如果运行64位jvm,则无法加载32位dll。如果是这种情况,请安装32bit jvm

答案 2 :(得分:0)

尝试使用System.load(path \ to \ library)而不是System.loadLibrary()。