2014-01-22 157 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仅用于记录两个库之间的依赖关系,与将它用于共享库或可执行文件时发生的情况不同。