我正在尝试通过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
任何想法?
答案 0 :(得分:0)
顾名思义,Native.loadLibrary()
需要一个原生于其运行平台的库 - 一个为另一个平台编译的库是不合适的。我不确定你的库文件是什么类型的文件,但dyld报告的前几个字节(62 6f 6f 6b =“book”?)表明它绝对不是Mac OS X dylib。