2015-03-13 43 views
0

我試圖打開中用System.loadLibrary的dlopen失敗,NDK 10D

System.loadLibrary("myLib"); 

的lib找到並加載,但它與UnsatisfiedLinkError

E/AndroidRuntime崩潰一個dll(5557 ):java.lang.UnsatisfiedLinkError中:dlopen的失敗:無法找到符號 「POW」,由 「libmyLib.so」 引用...

我認爲GCC含蓄地鏈接到libc和libm中......

  • 我試圖手動鏈接它,沒有太大的成功。
  • 我試圖鏈接到gnustl_shared。

我錯過了什麼嗎?

謝謝

+0

後你'Android.mk'和'Application.mk' – 2015-03-17 15:00:03

+0

不確定它是否適用於這種特殊情況,值得一提的是,在這種類型的迴歸問題中,仿生在作爲宏和圖書館功能的實現之間切換。如果你使用一個工具鏈構建它認爲它是一個庫函數,並運行在假定它應該是一個宏的設備上,你將會遇到這種失敗。您可以嘗試比較新NDK和舊版本的標題。 – 2015-03-17 15:34:05

+0

另一種可能性是,您意外地從您的開發系統中包含頭文件而不是Android NDK頭文件。 – 2015-03-17 15:41:03

回答

0

你是如何嘗試手動鏈接它的?您是否嘗試使用cmath/math.h中的double pow(double, double)?編譯期間您沒有收到任何警告?

通常情況下,在你Android.mk添加此:

LOCAL_LDLIBS += -lm 

您的源應當正確鏈接到NDK的libm.so

相關問題