【发布时间】:2018-10-23 11:22:28
【问题描述】:
我从另一个 Android 项目生成静态库,所以很确定它们是可用的。
我得到了四个基于 CPU 架构的 .a 文件,一个也经过测试的 .h 文件。
现在在新项目中,另一个.c文件要调用静态库,我不能合并两个项目,静态库必须以.a格式调用。
我收到“CMake 错误:CMake 无法确定目标的链接器语言”,这是我的 CMakeLists.txt:
add_library(
mylib
STATIC
src/main/jniLibs/arm64-v8a/libmylib.a
src/main/jniLibs/armeabi-v7a/libmylib.a
src/main/jniLibs/x86/libmylib.a
src/main/jniLibs/x86_64/libmylib.a
)
target_link_libraries(
native-lib
mylib
)
mylib 是预构建的库。 native-lib 想调用 mylib。
也欢迎提供有关如何从 scrat 将 .a 文件添加到项目的链接。
【问题讨论】:
-
试试
STATIC IMPORTED可能吗?有关示例,请参见 github.com/googlesamples/android-ndk/blob/master/hello-libs/app/…。 -
对于链接库一起,使用
target_link_library命令;不要将一个库添加为另一个库的源。顺便说一句,您只能链接相同架构的库。链接arm和x86库是不可能的。
标签: c cmake android-ndk linker static-libraries