首页 > 因链接静态库先后顺序不正确,引起符号定义找不到

因链接静态库先后顺序不正确,引起符号定义找不到

问题

项目中需要链接多个静态库,在编译的时候报错如下

sdi_io.cpp:(.text._ZN13sdi_H264EncIO7DataPopEPm+0x30):对‘H264ENC_StatusGet(H264ENC_Status_t&)’未定义的引用

可能原因是符号确实没有定义,而本文出现这个问题的原因是,链接的静态库有前后的依赖顺序

解决方案

方法一:修正静态库的链接顺序:可以通过手动的修改静态库的链接顺序

方法二:忽略静态库的链接顺序:编写 CMakeLists.txt 时,链接静态库可以忽略静态库的链接顺序,示例如下

target_link_libraries(${PROJECT_NAME}  -Wl,--start-group${CMAKE_CURRENT_SOURCE_DIR}/lib/libapexdrv.a${CMAKE_CURRENT_SOURCE_DIR}/lib/libsdi.a${CMAKE_CURRENT_SOURCE_DIR}/lib/libseqdrv.a${CMAKE_CURRENT_SOURCE_DIR}/lib/libsumat.a${CMAKE_CURRENT_SOURCE_DIR}/lib/libumat.a${CMAKE_CURRENT_SOURCE_DIR}/lib/libviudrv.a-Wl,--end-group
)

其中使用的忽略链接的选项是 Wl,前后都要加上配置选项

更多相关:

  • 今天,小编给大家带来的教程为:前嗅ForeSpider脚本教程中,链接抽取的应用场景,以及链接在源码的html标签里写脚本的实战教程。具体内容如下:一.应用场景当需要手动添加链接时,可添加链接脚本。在“链接脚本处”,可能用到的类为extractor 、result、url、grabDoc、dom。二.链接在源码的html标签里链接地址...

  • 上一篇文章里大概描述linux下静态链接库的编译与使用,下面讲动态链接库的编译与使用方法。 1. 什么是动态链接库     所谓动态链接库,是指编译的时候不会把程序引用到的库插入到执行程序里,而是在执行时候才会去加载相关的库,所有用到此库的程序可以共享一份代码。     这样带来的好处是可执行程序所占的空间变小了,同时,如果库需要升...

  • 人们总喜欢在帖子中加上各种有用的URL链接或Email地址。而笔者当初设计时没有考虑到这一点,使得这些URL链接或Email地址只能以文字的形式而并不是以超链接的形式显示,其它浏览帖子的人还必须把这些URL链接拷贝到浏览器中或把Email地址拷贝到Outlook中才能转到相应的链接地址或发送电子邮件到相应的Email地址。   发现这...

  • iPhone上的Safari(还有些webkit android手机浏览器)会自动对看起来像是电话号码的数字串(包括已经加入连字符或括号格式化过的)添加电话链接,点击之后会询问用户是否想要拨打该号码。如果你不希望开启这个自动识别,可以将它关闭:

    针对web高并发量的处理

    针对高并发量的处理 一个老生常谈的话题了 至于需要运维支持的那些cdn、负载均衡神马的就不赘述了 你们都懂的 虫子在此博文只讲一些从程序角度出发的一些不错的解决方案。 至于从数据库角度的性能方案、虫子另开博文。 1. 首推静态化 推荐指数五颗星 满星五颗 只要是大型互联网应用基本上离不开这个概念,IIS自带的伪静态化不谈,但是想做好...

  • 转载自 http://zhixinliu.com/2016/02/01/2016-02-01-cmake-cross-compile/ CMake交叉编译 CMake的使用,以及如何将一个项目移植到Android。 CMake的用法 先让我们简单学习回顾一下cmake的基本知识: 基本流程 以linux平台为例,使用...

  • CMake 官方 FAQ https://gitlab.kitware.com/cmake/community/wikis/FAQ CMake 官方文档 https://cmake.org/cmake/help/cmake2.4docs.html CMake 视频教程 https://www.youtube.com/watch?v=C...