首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个动态库与全局变量的有关问题

2012-04-20 
一个动态库与全局变量的问题有一个静态库static.a,其实有一个全局变量 glb有一个p_f,它返回glb变量的地址

一个动态库与全局变量的问题
有一个静态库static.a,其实有一个全局变量 glb;有一个p_f,它返回glb变量的地址.变量定义在.c文件中,h文件中通过extern 定义出来的。

有两个动态库dy1,dy2,均链接了static.a这个静态库。

我在动态dy1中,打出日志,显示glb的地址,
我在动态dy2中,打出日志,显示glb的地址,
这两次变量的地址不一样,但是我想让他们是一个变量,要需要怎么做呀。

如果我把这两个dy1,dy2合并成一个动态库,是没有问题的。但我想知道这是什么原因,而且还是想做成两个库的形式,求帮助。

[解决办法]
可以设立共享内存。

在不同的进程里,动态库的代码是共享的,但各自都有一份数据的拷贝。
[解决办法]
静态库和动态库的全局变量对外最好不可见

静态库extern出的变量当然会不同,是分别链接的

动态库倒是有可能,不过这样用容易出错吧~~~`
[解决办法]
不同的进程空间呢。怎么可能会一样。
[解决办法]
如果只有一个进程的话,不管是哪个动态库,打印出来的glb应该是一样的。
[解决办法]
动态库是共享的,地址映射到相应进程的,是一样的
静态库是分别加载进相应的进程,当然每个进程是不一样的咯

热点排行