ndk-cmake

1、 CMakeLists.txt参数详解

AndroidStudio之NDK开发CMake CMakeLists.txt编写入门_江西省遂川县杰出青年代表的博客-CSDN博客

2、CMakeList初步了解,及过程

AndroidStudio CMakeList的总结 - 简书

3、cmake 基本命令

https://www.cnblogs.com/wangjian8888/articles/10710690.html
4、cmake常用的变量

Android NDK 开发:CMake 使用 - 简书

5、其他参考文章

AndroidStudio CMakeList的总结 - 简书

Android studio中NDK开发(二)——使用CMake引入第三方so库及头文件_Xiongjiayo的博客-CSDN博客https://blog.csdn.net/Xiongjiayo/article/details/85340121

6、编译库类型

add_library(<name> [STATIC | SHARED | MODULE]
            [EXCLUDE_FROM_ALL]
            [<source>...])

静态库(.a、.lib):编译应用程序就将代码编译进去,跟自己的代码无区别。STATIC

        官方解释:STATIC libraries are archives of object files for use when linking other targets

动态库(.so、.dll):编译应用程序时没有引入,执行时才将将动态库加载到内存中。SHARED

        官方解释:libraries are linked dynamically and loaded at runtime

MODULE:

   官方解释:MODULE libraries are plugins that are not linked into other targets but may be loaded dynamically at runtime using dlopen-like functionality

add_library(<name> OBJECT [<source>...])

OBJECT:

        官方解释:An object library compiles source files but does not archive or link their object files into a library.

8、若出现"undefined reference to XXX"错误,

1、有可能是没有引入对应的.h或者.cc文件,此时如果在报错地方可以跳转到缺失的引用,有可能是CMakeLists.txt文件没有引入对应的.h或者.cc。

2、在C++中编译C,及在.cc中包含.c,也就是在.cc对应的.h头文件中包含了.c对应的头文件,也或许是.cc中包含了.c对应的.h头文件或者.c,导致编译报错,这时需要在加载.c头文件的地方加入extern "C"{ }

例如:audio_file_decoder.h对应的是audio_file_decoder.cc,这时audio_file_decoder.h引入了frame.c对应的frame.h文件,就需要这样处理:

extern "C"{
    #include "/ffmpeg/include/libavutil/frame.h"
}

9、出现android NativeLibrary: java.lang.UnsatisfiedLinkError: dlopen failed: library "libavutil.so" not found

在cmakelists中,通过target_link_libraries 链接其他.so,例如链接x.so,如出现这样的错误,说明x.so未被打包进入apk中,这时需要将.so按照gradle编译脚本要求,放到jniLibs文件中,这样再编译就没有问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值