博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态库与主程序共享全局变量 -- (转)
阅读量:4319 次
发布时间:2019-06-06

本文共 504 字,大约阅读时间需要 1 分钟。

曾经在一次写程序的时候,全局使用一个日志对象,所有的日志信息都由此日志对象写入文件。但是发现在动态链接库里,无法存取到该全局对象,后经查找资料。发现,动态链接库是否能存取主程序的全局变量,主程序是否能存取动态链接库里定义的全局变量都是可以通过链接指令改变此行为。
主程序存取动态链接库里的全局变量
例如动态库里定义全局变量int i, 在主程序里申明extern int i。 则,主程序存取的就是动态库里定义的i。在所有的UNIX平台上这是默认的行为(注意:实际定义i的 模块的点o文件,必须同时链接到动态库和主程序上,否则链接报错)。
如果不想让主程序能存取动态库里的全局变量,则在链接动态连接库的时候,给gcc传入-Wl,-Bsymbolic即可。
动态连接库存取主程序里定义的全局变量
在linux上,链接主程序的时候,使用参数-Wl,--export-dynamic
在AIX上,使用'deferred imports' 并且 enable 'runtime linking'.
 
文章来源:

转载于:https://www.cnblogs.com/fendou-999/p/3519949.html

你可能感兴趣的文章
Azure ARMTemplate模板,VM扩展命令
查看>>
在腾讯云上创建您的SQL Cluster(4)
查看>>
linux ping命令
查看>>
Activiti源码浅析:Activiti的活动授权机制
查看>>
数位dp整理
查看>>
UNIX基础知识
查看>>
bzoj 1179: [Apio2009]Atm
查看>>
利用LDA进行文本聚类(hadoop, mahout)
查看>>
第三周作业
查看>>
js添加删除行
查看>>
浏览器性能测试网址
查看>>
[MTK FP]用Python把图片资源image.rar中为.pbm后缀的文件更改为.bmp后缀的方法
查看>>
实验二
查看>>
[LeetCode]203. Remove Linked List Elements 解题小结
查看>>
测试一下
查看>>
vue base64
查看>>
【Django实战开发】案例一:创建自己的blog站点-1.安装及搭建开发环境
查看>>
Pie(二分)
查看>>
Mysql 索引优化
查看>>
09湖州二模(自选模块不等式)
查看>>