当链接到已链接到共享库的静态库时,android.mk链接错误

当链接到已链接到共享库的静态库时,android.mk链接错误,android,android-ndk,compiler-errors,shared-libraries,static-libraries,Android,Android Ndk,Compiler Errors,Shared Libraries,Static Libraries,假设A是一个共享库,B是一个静态库,B链接到A。现在C(也是一个共享库)需要链接到B。链接错误是A中的函数(由B调用)找不到。 下面是我的android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := c LOCAL_LDLIBS := -L/$(LOCAL_PATH)/libs LOCAL_LDLIBS += -la #LOCAL_SHARED_LIBRARIES := a LOCAL_

假设A是一个共享库,B是一个静态库,B链接到A。现在C(也是一个共享库)需要链接到B。链接错误是A中的函数(由B调用)找不到。 下面是我的android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)  
LOCAL_MODULE    := c

LOCAL_LDLIBS := -L/$(LOCAL_PATH)/libs
LOCAL_LDLIBS += -la

#LOCAL_SHARED_LIBRARIES := a
LOCAL_STATIC_LIBRARIES := b

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/inc
LOCAL_C_INCLUDES := $(LOCAL_EXPORT_C_INCLUDES)
LOCAL_SRC_FILES := src/c.cpp    

include $(BUILD_SHARED_LIBRARY)
非常感谢,我在这里呆了好几天了


现在好像没事了,我还是不知道哪里出了问题。可能我没有将a和b的库放在正确的C目录中。

如果您添加本地共享库:=a,会发生什么?谢谢,我已经测试了您的建议,错误是找不到库a。那么您就有问题了。C包含B,但B需要A。A共享,它不包含在B中,因此必须在C中指定或包含它才能编译。C包含了A的侦听器文件。A、B、C已分别按顺序编译。A、 B两个都编译成功。有什么想法吗?njzk2I不明白为什么C有A的头,而不是像B一样将其作为共享库包含?