使用android studio 2.2.2在CMAKE中的target_link_libraries

时间:2016-11-22 00:26:09

标签: android ffmpeg android-ndk cmake

我面临一个奇怪的问题,很难知道为什么,因为编译器没有给出任何错误。

我在android studio 2.2.2中创建了一个支持C ++的新项目。 我编辑了src / main / cpp中的.cpp文件并编译了项目以获取(.so)文件,我可以将其用作共享库。到目前为止,一切都很完美。

以下是问题发生的地方:

我正在尝试从ffmpeg链接预构建共享库。我已经用.so格式构建了库,我需要做的就是将它们链接到我的.cpp文件。

要链接这些库,我在android studio中打开了CMakeLists.txt并告诉cmake使用以下代码链接这些预建共享库:

add_library(libavformat SHARED IMPORTED)

set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION C:/Android /SDK/MyProjects/ffmpeg_to_jpg/P3/app/src/main/jniLibs/libavformat-55.so)

include_directories(src/main/cpp/include/)

target_link_libraries(native-lib libavformat)

此代码基本上将libavformat链接到native-lib(从我的.cpp文件创建)

链接过程工作正常,原因是编译器不会因任何依赖关系而哭泣。

但是,我的原始共享库(native-lib)停止工作,我的意思是,我无法从中调用任何函数。

如果我删除链接线

target_link_libraries(native-lib  libavformat)

native-lib.so工作正常,我可以从内部调用任何不依赖于libavformat的函数。

我不确定发生了什么,就像我说编译器没有发出任何警告或错误。它几乎就像在链接过程之后,libavformat !!!!

覆盖了native-lib的内容

任何想法?

0 个答案:

没有答案