静态库和动态库里的全局变量(或类的静态成员变量)共享和独立的问题

时间:2015-11-22 08:57:22
【文件属性】:

文件名称:静态库和动态库里的全局变量(或类的静态成员变量)共享和独立的问题

文件大小:82KB

文件格式:RAR

更新时间:2015-11-22 08:57:22

静态库 动态库 全局变量 静态成员变量

测试代码说明以下两个问题: 1. 工程中包含静态库A,动态库B,可执行程序C。C依赖于A和B,而B依赖于A。在A中定义有全局变量X(或类的静态成员变量),则在动态库B中访问的X,与可执行程序C中访问的X是同一个变量还是两个不同的变量? 答案:是两个不同的变量。 2. 工程中包含动态库A,动态库B,可执行程序C。C依赖于A和B,而B依赖于A。在A中定义有全局变量X(或类的静态成员变量),则在动态库B中访问的X,与可执行程序C中访问的X是同一个变量还是两个不同的变量?(注:所有库都在同一进程中使用) 答案:是共享同一个变量。即:在A是动态库的这种情况下,B和C访问到的X是同一变量。 博文地址:http://blog.csdn.net/guggy/article/details/8136325 或即时记:http://www.livelog.cn/bbs/viewthread.php?tid=16


【文件预览】:
LibraryTest
----StaticTest()
--------TestDlg()
--------B()
--------Bin()
--------A()
----DllTest()
--------TestDlg()
--------B()
--------Bin()
--------A()

网友评论

  • 是window 编程代码.不是linux c,很有参考意义,不过第一个结论,在linux 中并不是一样: 1.最终生成的可执行程序,全局变量在编译链接的时候已经确定好,如果静态a定义与动态库b全局变量重名,那么编译器会选择先链接的那个库的全局变量,后面再出现重义,则忽略.无论怎么,一个可以执行的程序,对于重名的定义,都只留了一个符号,重名函数也是一样的. https://blog.csdn.net/u012385733/article/details/80915360
  • 简单的例子, 供懒人参考一下
  • 最简单的例子了
  • 谢谢,学到了点东西
  • 挺好的,帮助挺大的
  • 最简单的例子了
  • 谢谢,很好用
  • 确实很有用处 ,受教了
  • 确实有帮助
  • 谢谢,很有帮助