2012-05-10 21 views
0

我試圖通過JNAJNA MacOSX的裝載libXY.so代替libXY.dylib

加載共享對象庫

文件名爲libLIBNAME.so 我的代碼看起來是這樣的:

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

但每次我執行它,我得到

無法加載庫 'LIBNAME':dlopen的(libLIBNAME.dylib,9):圖像不 發現

我該如何告訴JNA加載xxx.so而不是xxx.dylib?

我也試圖通過剛好路過參數包裝一個名爲.dylib內的.so文件,但顯然沒有運氣

從libLIBNAME.so一個符號鏈接設置爲libLIBNAME.dylib結果:

無法加載庫'LIBNAME':dlopen(/ path ..../libLIBNAME.dylib, 9):找不到合適的圖像。確實發現:/path..../libLIBNAME.dylib: 未知的文件類型,前八個字節:0X62 0x6F 0x6F 0x6B爲0x00爲0x00 爲0x00爲0x00

什麼想法?

+0

如果您提供文件的完整名稱而不僅僅是庫名稱,JNA還會加載您指定的任何文件。 – technomage

回答

0

顧名思義,Native.loadLibrary()需要一個運行於其平臺上的本機庫 - 爲另一個平臺編譯的庫不適用。我不確定你的庫文件是什麼類型的文件,但dyld(62 6f 6f 6b =「book」?)報告的前幾個字節表明它絕對不是Mac OS X dylib。

+0

lipo -info libLIBNAME.so生成: 胖文件中的體系結構:libLIBNAME.so是:ppc i386 ppc64 x86_64 – Wolf