我正在尝试创建一个链接到第三方静态库的静态库。 目前我收到的错误是
libqqrcAPI.a
需要制作目标`... / libqqrcLib.a'的规则
通过更新到支持使用预建库的新版NDK来解决这个问题(5b)
这是我正在使用的Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := qqrcLib
LOCAL_SRC_FILES := libqqrc.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/coreLib/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_CPP_EXTENSION := cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/qqrc/
LOCAL_MODULE := qqrcAPI
LOCAL_SRC_FILES := qqrcEngineImpl.cpp
LOCAL_STATIC_LIBRARIES := qqrcLib
include $(BUILD_STATIC_LIBRARY)
基本上我有一个qqrc.a静态库,我已经为它声明了一个模块“qqrcLib”。
我希望能够将它链接到名为“qqrcAPI”的第二个模块(它在qqrcEngineImpl.cpp中被引用)
由于libqqrc.a是使用不同的方法编译的,因此将它放在这2种库格式中非常重要。
同样重要的是声明我定义了一个看起来像这样的Application.mk:
APP_MODULES := qqrcAPI
APP_PROJECT_PATH := $(call my-dir)./..
为了能够创建静态库。 (否则我没有输出..)
当前的问题对我来说,即使我有一个单独的模块用于预构建的库并且似乎编译,我也无法生成一个组合的静态库来保存预先构建的库它。
我在obj \ local \ armeabi目录下有预构建的库(qqrcLib.a)和新形成的静态库(qqrcAPI.a),但它似乎没有链接,因为新模块太小了......
我做错了什么?
帮助? :)
答案 0 :(得分:0)
我认为你不能使用静态库和JNI。您将要用作JNI的顶级库需要共享。
据我所知,当你将静态库添加到另一个静态库时,第二个库.a
文件不包含所有第一个库,即你仍然需要链接{{1生成.a
(或其他实际可执行文件)的文件。
你必须尝试使用这些库吗?我认为您的问题的解决方案来自下一步(可能是.so
共享库)。