2014-01-22 196 views
0

我想建立靜態庫鏈接到第三方靜態庫。然後將我建立的靜態庫提供給其他人使用。但是當其他人使用我的庫時,他們發現錯誤「未定義的引用'Func1()'」,「Func1()」是在third_part靜態庫中定義的函數。有沒有人有一個想法如何解決它?如何使用Android構建靜態庫鏈接到第三方靜態庫ndk

Here's my Android.mk: 

LOCAL_PATH:= $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := ThirdLib_Rebuild 
LOCAL_SRC_FILES := libThird.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := MyLib 
LOCAL_STATIC_LIBRARIES := ThirdLib_Rebuild 
LOCAL_SRC_FILES := MyLib.c 
include $(BUILD_STATIC_LIBRARY) 

回答

0

NDK,構建支持傳遞依賴,也就是說,如果你定義共享庫或取決於你的MyLib中模塊上的可執行文件,然後libmylib.a添加和libThird.a兩者都將被鏈接到它(如果沒有,這是一個錯誤,你準確使用NDK?)。

但是,您不清楚在將庫分發給其他人時你正在做什麼。爲了記錄,您需要將這兩個庫分發給您的用戶,因爲libMyLib.a不包含來自libThird.a的代碼,所以在MyLib模塊定義中使用LOCAL_STATIC_LIBRARIES僅用於記錄兩個庫之間的依賴關係,與將它用於共享庫或可執行文件時發生的情況不同。