AndroidNDK:依赖预构建库构建库时出现问题
我有一个名为B的c库,它依赖于另一个名为a的c库。我确信我可以通过Android NDK成功编译和使用a 现在我正在尝试使用androidndk编译B库。我有一个jni文件夹和Android项目。我的jni文件夹包含A和B文件夹,它们具有库c代码。jni文件夹还有一个预构建文件夹,其中包含a.so文件(预构建的a库文件) 我的问题是,我不能建立B。我可以编译它,但我不能链接它。请问,有人能帮我指出我的错误吗?A和B是我在项目中使用的通用名称,而不是我正在使用的真实名称。我将在下面列出Android.mk文件 用于构建A的Android.mk文件(该文件对于我描述的Android项目不可见,尽管它也有A代码): 预构建文件夹中的Android.mk文件:AndroidNDK:依赖预构建库构建库时出现问题,android,linker,android-ndk,Android,Linker,Android Ndk,我有一个名为B的c库,它依赖于另一个名为a的c库。我确信我可以通过Android NDK成功编译和使用a 现在我正在尝试使用androidndk编译B库。我有一个jni文件夹和Android项目。我的jni文件夹包含A和B文件夹,它们具有库c代码。jni文件夹还有一个预构建文件夹,其中包含a.so文件(预构建的a库文件) 我的问题是,我不能建立B。我可以编译它,但我不能链接它。请问,有人能帮我指出我的错误吗?A和B是我在项目中使用的通用名称,而不是我正在使用的真实名称。我将在下面列出Androi
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libA
LOCAL_SRC_FILES := prebuilt/libA.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/A/src
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libB
LOCAL_SRC_FILES := B/src/fileB.c
LOCAL_SHARED_LIBRARIES := libA
include $(BUILD_SHARED_LIBRARY)
执行ndk build命令时,最终输出如下:
B/src/fileB.c:15:错误:未定义对的引用
“A_函数”集合2:ld返回1个退出状态make:*
[obj/local/armeabi/libB.so]错误1
B库文件实际上可以访问A库,但它们不知道如何访问。将所需的标题(.h文件来自A库)添加到JNI的子文件夹,并指定以下内容:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/your/sub/folder
在您的B项目声明中
我仍然有一个问题,必须将a库声明为预构建的_静态库,然后添加到B库
LOCAL_WHOLE_STATIC_LIBRARIES := libA
谢谢你的回答。但是,请问,您的意思是我应该修改Android项目中jni文件夹的Android.mk文件以编译B,这样它就不会有“LOCAL_SHARED_LIBRARIES:=libA”子句吗?如果是这样的话,很抱歉,它还没有解决问题。我已经有了类似$(LOCAL_PATH)/your/sub/folder的东西,它是我的A/src文件夹,而LOCAL_C_include似乎没有效果,因为在B project Android.mk文件中设置了LOCAL_EXPORT_C_include。我是说你应该用LOCAL_全局静态_库替换LOCAL_共享_库。
LOCAL_WHOLE_STATIC_LIBRARIES := libA