0

我正在尝试通过 JNA 加载共享对象库

该文件名为 libLIBNAME.so 我的代码如下所示:

Native.loadLibrary("LIBNAME", SomeInterface.class);

但每次我执行它,我得到

无法加载库“LIBNAME”:dlopen(libLIBNAME.dylib,9):找不到图像

我如何告诉 JNA 加载 xxx.so 而不是 xxx.dylib?

我还尝试通过仅传递参数将 .so 文件包装在 .dylib 中,但显然没有运气

设置从 libLIBNAME.so 到 libLIBNAME.dylib 的符号链接会导致:

无法加载库“LIBNAME”:dlopen(/path..../libLIBNAME.dylib, 9):找不到合适的图像。确实找到了:/path..../libLIBNAME.dylib:未知文件类型,前八个字节:0x62 0x6F 0x6F 0x6B 0x00 0x00 0x00 0x00

有任何想法吗?

4

1 回答 1

0

顾名思义,Native.loadLibrary()需要一个在其运行的平台上本地的库——为另一个平台编译的库不适合。我不确定你的库文件是什么类型的文件,但 dyld 报告的前几个字节(62 6f 6f 6b = "book"?)表明它绝对不是 Mac OS X dylib。

于 2012-05-10T17:31:14.487 回答