最近在整合C和C++源文件,cpp目录下有多个子文件,然后如果是子目录出现有Android性质的元素时,就会报错。如下图所示

现在如果子目录里出现Android的LOG的日志时,就会报如下的一个错:

Error:(199) undefined reference to `__android_log_print'

但是我已经在gradle里添加了相应的语句了,还是不行。后来查阅了很多资料,也耗了整天时间,发现如果将所有文件打包成一个库,则不会报错,如果在同一个CMakeList文件里生成多个库的时候,就会报错。

解决办法有两种:

第一种就是和我前面所说的,将所有子目录的文件+根目录下所有的文件,都打进一个库里,这样就不会报错了,如下图红框所示,将video_srcs与native-lib打进同一个库。其实这个办法在实际项目中是个不错的办法,因为全部打成一个库,这样别人根据库名字及特征反编译出来就难很多了。所以推荐这个办法;

另一种就是打成多个库,即cpp目录下,根据逻辑的不同,分有多个子文件夹,然后每个子文件夹都打成一个包。如果这样的话,就必须在每个子文件夹下都对应有一个CMakeList文件才行,可以参考这位大佬的经验:

https://www.jianshu.com/p/f09dbaf72126

如上图所示,即可打包成多个库。

但实测我发现,如果这多个库有互相调用的情况下,会报一些无定义的错(但明明已经定义好的了)。这一点至今我还没弄明白,有哪位高手解决下吧= =

查阅资料时,在StackOverflow发现了一个有趣的贴子,就是使用GLOB_RECURSE可以实现根目录、子目录下所有同类的源文件自动添加,如下所示:

file(GLOB_RECURSE cpp_srcs_c "src/main/cpp/*.c")
file(GLOB_RECURSE cpp_srcs_cpp "src/main/cpp/*.cpp")

最后附上这个贴子的地址:https://stackoverflow.com/questions/45209369/android-cmakelist-add-multi-source-file

Error:(199) undefined reference to `__android_log_print'相关推荐

  1. error undefined reference to __android_log_print

    error undefined reference to '__android_log_print 配置 Android.mk文件 输入 LOCAL_LDLIBS := -llog 打印日志库 注意: ...

  2. Android系统编译so库提示error undefined reference to '__android_log_print问题的解决

    在系统源代码的hardware/qcom下增加psam文件夹,编译源代码要生成libpsam.so库,Android.mk内容 LOCAL_PATH := $(call my-dir) include ...

  3. 解决Error: undefined reference to `__android_log_print'

    解决Error: undefined reference to `__android_log_print'     最近在使用Android Studio进行NDK开发时,程序本身是没有问题,但一旦添 ...

  4. undefined reference to android log print,undefined reference to '__android_log_print'

    场景:undefined reference to `android_log_print' undefined reference to `__android_log_print' 原因:没有加入支持 ...

  5. undefined reference to `__android_log_print'

    参考:http://blog.csdn.net/u010331406/article/details/50907714 这个问题就是导入 android studio 后遇到的,错误如下: undef ...

  6. 安卓 jni 开发错误 undefined reference to __android_log_print

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 jni 最近要搞安卓下串口的读写,需要用到 jni,然后遇到了这个问题,坑挺多. 串口读写参考文章:Android串口操 ...

  7. undefined reference to '__android_log_print'解决方案

    1:在源程序中添加头文件 #include <cutils/log.h> 2:在Android.mk中添加 LOCAL_SHARED_LIBRARIES := \libutils \lib ...

  8. ESP32(Espressif-IDE)添加外部(.c .h)文件 (error:undefined reference to)

    0x00:前言 笔记文件 用习惯了keil和iar之类的开发软件,一下子转换到ESP32是特别的不习惯,这里使用的开发环境是乐鑫官方推出的Espressif-IDE,也是刚学折腾ESP32,刚开始就遇 ...

  9. Android Studio 下安卓 jni 开发错误 undefined reference to AndroidBitmap_getInfo

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 又掉坑里了 今天开发 uvc,又遇到了坑: 和之前的这个坑类似:Android Studio 下安卓 jni 开发错误 ...

  10. android jni不适用ndk,Android NDK编译之undefined reference to 'JNI_CreateJavaVM'

    利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM.编译的时候始终报以下错误: XXX: ...

最新文章

  1. python 不得不知的第三方库以及常用安装包
  2. 获 3.8 亿用户青睐,中国电信翼支付如何数据化运营?
  3. 青岛农业大学第九届ACM程序设计竞赛
  4. linux如何退出python编辑器_centos linux 终端已经调成python3,怎么安装python3的IDLE编译器,...
  5. Laravel添加验证场景提高针对性质的验证
  6. 电脑软件:巧用微软小工具解决日常问题!
  7. 【数据结构与算法】循环队列和链队列的比较
  8. OpenShift 4 之通过直接访问内部的 Image Registry 操作容器镜像
  9. idea package放在什么位置_NBA现役球员大排名,你会把20岁的东契奇放在什么位置?...
  10. 浅析C#中new、override、virtual关键字的区别
  11. 【系统分析师之路】2019年上系统分析师综合知识真题
  12. 魏俊妮《非人力资源的人力资源管理技术提升》课程大纲
  13. ESXI7.0下载地址
  14. mac 谷歌浏览器 跨域访问
  15. 学mysql后的收获_数据库课程学习的收获和心得体会
  16. mysql表字段一定要写英文吗_关于数据库列名是否必须是英文的?
  17. 操作系统中的虚拟内存详解
  18. apollo github的说明介绍
  19. 【绝地求生:刺激战场】雪地新地图抢先了解
  20. 使用CrawlSpider爬取糗事百科段子

热门文章

  1. mdt 计算机名_配置 MDT 部署共享规则
  2. opencv车牌照识别
  3. Python爬虫实例项目大全
  4. android 生成长截图,【UNIAPP截长图】方案之一:滚动截屏 Android
  5. 海南移动IPTV——使用的小Tips
  6. Java面试:java简历包装医疗项目
  7. 在Qt工程中调用GmSSL
  8. Adblock 插件规则语法实现B 站动态黑名单 - 隐藏特定用户的图文动态
  9. android 4.2刷机包,纽曼 K1 Android4.2.1 ROM刷机包 全局提取 精简 流畅 稳定
  10. SVN 分支与主干的合并