2017-04-07 84 views
2

我試圖找出如何我的本地庫集成到Android的代碼。我創建了一個簡單的C++函數,它在設備上運行代碼時工作正常。但是我目前的目標是使其在單元測試ENV(JUnit的)工作,我面臨的問題:「java.lang.UnsatisfiedLinkError中:*。所以:找不到依賴庫」,在單元測試ENV

所以,在單元測試ENV System.loadLibrary("lib")不工作了,我也cange到 System.load("/full/path/to/lib.so"),但現在這行拋出異常:

java.lang.UnsatisfiedLinkError: app\build\intermediates\cmake\debug\obj\x86_64\liblib.so: Can't find dependent libraries at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) at java.lang.Runtime.load0(Runtime.java:809) at java.lang.System.load(System.java:1086)

路徑是正確的,存在此路徑的文件存在。

我tryed使用路徑LIB的x86基礎版本,但它仍然拋出同樣的異常。

我使用的是最新的Android NDK,鐺工具鏈,在基於Windows 7的64位筆記本電腦上運行單元測試,CPU是酷睿i7,並在運行Java版本也似乎是64位。

那麼可能是什麼問題,在這種情況下,如何解決?


我有,即使考慮到這一事實鐺編譯的x86/x86_64的* .so文件有一種感覺,他們仍然在基於Windows的ENV無效,但我沒有安裝Linux的快速檢查這個想法。

回答

0

它可以是很明顯,但這個消息告訴你的* .so庫取決於哪個不是(在你的情況在Android)目標平臺上提出了一些其他的庫。
也許,你的庫使用Windows API的一些東西。我建議檢測壞依賴使用工具,如Dependency Walker

相關問題