在使用多个动态库时,两个动态库之间有可能存在相同名称的函数,这样会出现只有第一个函数生效,即所有对该函数的调用都将指向第一个加载的动态库的同名函数中。这样就会很混乱,而且在想改名称也不是很简单的情况下就会很麻烦(例如同名函数太多,甚至就是模板)等等。

处理方法
这里只找到一种处理方法,当然你直接把名字改成不一样或者统一添加前缀(例如C++ namespace)也不错。方法如下:

-fvisibility=hidden
将以上的写入gcc/g++中去,从.o的生成到.so的生成的命令行都要填上。这个有什么作用呢?GUN规定动态库中的所有函数的全局变量默认是对外可见的,如果编译动态库时不添加以上参数,默认是可见的,添加之后,如果调用动态库的函数,会报错:

undefined symbol: XXX
所以还没有结束,接着就是要把动态库部分需要对外显示的函数接口显示出来:例如模块的入口函数:

__attribute__((visibility("default"))) int app_main(void)

__attribute__作用:

__attribute__ 可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)

格式:__attribute__(((visibility("default"),,,,,))

参考:
https://blog.csdn.net/u010144805/article/details/80811214

最新文章

  1. amazeui折叠面板智能化展开
  2. iOS开发之记录用户登录状态
  3. iOS 为什么app都是异步编程
  4. cf#382div2
  5. Java语言的个人理解
  6. [IOS+PHP Jason格式的发送与解析]
  7. HDU 1796 How many integers can you find 容斥入门
  8. C# 将cookiecontainer写到本地
  9. 移动端web页面使用position:fixed问题
  10. [Objective-c 基础 - 3.2] ARC
  11. 合并多个python list以及合并多个 django QuerySet 的方法
  12. C# 禁止 Webbrowser 控件的弹出脚本错误对话框
  13. emjio表情转json
  14. System.Web.Caching.Cache类 缓存 各种缓存依赖
  15. phpstorm 设置多项目并存
  16. 利用光场进行深度图估计(Depth Estimation)算法之一——聚焦算法
  17. 《Ext JS 4.2 实战》可以买了
  18. Linux的动态库与静态库
  19. 从数据库读取数据并动态生成easyui tree构结
  20. Linux安装Python3后,如何使用pip命令

热门文章

  1. nginx使用vhost子目录
  2. C#中设置自定义控件工具箱图标
  3. IIS 6.0的web园 最大工作进程数细谈
  4. 线上Storm的worker,executor,task参数调优篇
  5. 在centos 7下升级内核
  6. PYTHON 100days学习笔记008-4:错误和异常
  7. Django生成数据表时报错
  8. [转帖]【Oracle】详解Oracle中NLS_LANG变量的使用
  9. [转帖]Intel 上一代 可扩展CPU的简单报价
  10. 编写shell脚本实现对虚拟机cpu、内存、磁盘监控机制