出现这种问题,一般为某工程的动态链接库出现问题,一般为以下解决办法:
一、当前工程的.so文件和生成该.so文件的工程代码不一致,当前.so文件中不包含工程代码中的某些函数。例如我的工程代码中有NdarrytoImage()这个函数,但是我使用的.so生成时却没有该函数,则在编译的时候不包含NdarrytoImage函数,则会抛出no ndarrytoimage undefined symbol,
解决办法为将包含那个函数的工程代码重新编译,然后复制到目录中即可。

二、首先排查,C++调用了c的库?是不是需要加上extern “c”,尤其是类的动态库,需要用到工厂模式,create一个对象出来,该工厂函数需要extern “c”声明。

extern “C” CDbBase* create();
extern “C” void destroy(CDbBase* p);

CDbBase* create()
{
return new CDbDb2;
}

void destroy(CDbBase* p)
{
printf(“destroy CDbDb2!\n”);
   delete p;
}

三、使用ldd -r xxx.so或者 nm -A xxx.so等命令,查看so有哪些符号未定义的。

四、在步骤2发现有很多未定义的符号,跟运行时undefined symbol符合,而且该符号是外部的系统的动态库里定义的,那目标就定位到自己写的动态库里,链接的过程时,是否把这些动态库给链接进来。

查找发现makefile编译动态库时,找不到链接符号也是允许编译通过的,那最好是加上限制条件,在makefile加上 -Xlinker –unresolved-symbols=ignore-in-shared-libs ,让其报错,把未定义的符号给报错出来。

五、根据makefile的报错,原来是忘了把外部动态库给 -l进来,并把动态库路径-L进来,即可。

        </div></div>

linux动态库so调用外部so,运行时出现undefined symbol相关推荐

  1. Linux 动态库的显示调用

    Linux 动态库的显示调用 分类: 动态库与静态库 2012-03-17 23:56 1710人阅读 评论(0) 收藏 举报 linuxnulllibrary测试web服务apache 10.动态库 ...

  2. 阐述Linux动态库的显式调用

    阐述Linux动态库的显式调用 分类: Linux 2011-02-12 10:27 168人阅读 评论(0) 收藏 举报 linux测试nulllibrarypathgcc 十年的发展,Linux系 ...

  3. 分析Windows和Linux动态库

    摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...

  4. Linux 动态库和静态库

    From:http://blog.csdn.net/u010977122/article/details/52958330 From:http://blog.163.com/xychenbaihu@y ...

  5. Windows和Linux动态库比较 (Zhuan)

    Windows和Linux动态库比较 Description: 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库 可以有效的减少程序大小,节 ...

  6. linux代码动态分析软件,举例分析Linux动态库和静态库

    函数库分为静态库和动态库两种.创建Linux静态库和Linux动态库和使用它们在这里将以举例的形式详述一下.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不 ...

  7. linux动态库命名规则

    说道"动态库版本兼容",很多人头脑中首先蹦出的就是"Dll Hell".啊,这曾经让人头疼的难题.时至今日,这个难题已经很好地解决了.   在进一步讨论之前来思 ...

  8. 解决Linux动态库版本兼容问题

    说道"动态库版本兼容",很多人头脑中首先蹦出的就是"Dll Hell".啊,这曾经让人头疼的难题.时至今日,这个难题已经很好地解决了.   在进一步讨论之前来思 ...

  9. 举例分析Linux动态库和静态库

    转自:http://www.xxlinux.com/newxxlinux/development/gui/2012-01-05/499.html 函数库分为静态库和动态库两种.创建Linux静态库和L ...

最新文章

  1. [CQOI2009]中位数图 详细题解
  2. Camtasia Studio 7 试用笔记
  3. java中接口的定义与实现
  4. 百度PARL再度夺冠NeurIPS仿生人挑战赛:强化学习控制的流畅行走
  5. 华为交换机端口隔离配置
  6. 计算机指令格式哪几部分组成,计算机的指令格式,通常是由()两部分组成。 - 百科题库网...
  7. JS的DOM和BOM
  8. Mysql存储结构B树与B+树与索引
  9. dedecms后台崩溃或者后台访问慢的解决方法
  10. python基础列表(四)
  11. python - 编程规范问题
  12. 中国水蛭素产品行业市场供需与战略研究报告
  13. vue点击网页全屏_vue中实现点击变成全屏的多种方法
  14. php策略模式,PHP策略模式定义与用法(详解)
  15. 编译OpenJDK8:NMAKE : fatal error U1077
  16. 基于微信小程序 校园跑腿小程序毕业设计毕设开题报告参考功能
  17. [转载] 高校两院院士名单
  18. php绑定银行卡实现,php网站如何绑定银行卡
  19. “华为杯”第十七届中国研究生 数学建模竞赛-【华为杯】B题:降低汽油精制过程中的辛烷值损失模型(附优秀论文)
  20. HTML5七夕情人节表白网页制作【3D雪花展开相册】HTML+CSS+JavaScript 程序员表白网页 简单的3D相册制作

热门文章

  1. 华硕天选笔记本频繁IRQL_NOT_LESS_OR_EQUAL蓝屏个人解决方案记录
  2. js-Symbol.hasInstance
  3. 研究亥姆霍兹线圈轴线磁场分布(2)
  4. android新特性:DrawerLayout与NavigationView配合使用
  5. 客户满意度测评模型-层次分析法模型」
  6. TensorFlow相关的精彩问答
  7. 重温:求知若饥,虚心若愚
  8. lua连接mysql数据库
  9. HTML移动端开发常见的兼容性总结
  10. c语言对称矩阵的压缩存储_C++实现对称矩阵的压缩存储 | 术与道的分享