读书人

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

发布时间: 2012-04-20 15:27:03 作者: rapoo

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

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

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

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

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

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

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

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

读书人网 >C语言

热点推荐