編譯動態(tài)庫.so時依賴另一個動態(tài)庫中幾個函數(shù)朱沃,直接在代碼中extern這幾個函數(shù),動態(tài)鏈接依賴的動態(tài)庫搬卒,則報錯誤”undefined reference"
Android.mk動態(tài)庫部分
include $(CLEAR_VARS)
LOCAL_MODULE := ttsoff
LOCAL_SRC_FILES := libttsoff.so
include $(PREBUILT_SHARED_LIBRARY)
LOCAL_SHARED_LIBRARIES += ttsoff
Google了一下翎卓,發(fā)現(xiàn)一種解決辦法:
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
加上這個設置,則代碼可以順利編譯通過失暴。順便查了下資料,這個變量默認值是false逗扒,對于所有未定義的引用都會報“undefined symbol”錯誤,非常便于發(fā)現(xiàn)bug现恼。如果設置成'true‘時不會對檢查引用黍檩,代碼可以快速通過編譯叉袍,會很方便如果對于引用的庫有自信刽酱。但是編譯出來的動態(tài)庫可會會報運行時錯誤。
很不幸艺配,通過上面的設置我雖然通過了編譯但是碰上了所謂“runtime error"衍慎,所以還得繼續(xù)研究转唉。
嘗試了另一種方法:把extern函數(shù)的聲明都刪掉稳捆,在代碼中加入完整的接口頭文件(也就是動態(tài)庫頭文件),這樣就順利編譯通過乔夯!
Android.mk說明