JNA Macosx加载libXY.so而不是libXY.dylib

时间:2012-05-10 16:34:51

标签: java macos jna dylib

我正在尝试通过JNA

加载共享对象库

该文件名为libLIBNAME.so 我的代码看起来像这样:

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

但每次我执行它,我都会

  

无法加载库'LIBNAME':dlopen(libLIBNAME.dylib,9):image not not   结果

我如何告诉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

任何想法?

1 个答案:

答案 0 :(得分:0)

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