使用NDK链接到静态库

时间:2014-07-08 12:05:08

标签: android static android-ndk

我有一个来自其他公司的静态库(.a和.h文件)。该库适用于ios。我想知道我是否可以使用NDK将此库链接到我的Android应用程序?

我尝试了但是遇到了一些错误 这是我的android.mk(我把.a和.h文件放在jni文件夹中)

include $(CLEAR_VARS)
LOCAL_MODULE := staticLib
LOCAL_SRC_FILES := staticLib.a
LOCAL_EXPORT_C_INCLUDES := ./
include $(PREBUILT_STATIC_LIBRARY)

include $(call all-subdir-makefiles)
include $(CLEAR_VARS)

LOCAL_MODULE    := shareLib
LOCAL_SRC_FILES := shareLib.cpp

LOCAL_LDLIBS := -llog -ldl
LOCAL_STATIC_LIBRARIES := staticLib
include $(BUILD_SHARED_LIBRARY)

我在构建项目时遇到了这个错误

make: * [obj / local / armeabi-v7a / shareLib.so]错误1

2 个答案:

答案 0 :(得分:0)

我想知道你是否可以链接相同的内容。由于库需要与Android NDK交叉编译。 Android使用功能有限的仿生库。所以,大多数情况下它可能无效。

答案 1 :(得分:0)

为iOS构建的静态库肯定会在Android上 工作,您确实需要使用与Android兼容的工具链重新编译源代码(例如提供的工具链)与NDK)。

为Linux / ARM构建的静态库也是一样,它提供了一个完全不同的运行时/ C库。

除此之外,在执行其他模块声明之前不要调用all-subdir-makefiles,因为这会弄乱你的LOCAL_PATH定义(遗憾的是这是一个无法通过ndk-build工作的GNU Make问题)。 / p>

只需将电话放在Android.mk的末尾即可。