所以,如果调用的是静态库中的类函数的实现,则自然使用DLL中的全局变量。 如果调用的是EXE中的实现,则自然是访问EXE中的全局变量。 问题的解决方案: 方案1、静态库中去掉全局变量,改用其他方式。 方案2、静态库改成动态库。 方案3、整个Solution保证只有一份静态库的实现。 个人觉得静态库有太多实现,总感觉不太安...
按我们一般的理解,全局变量只会被初始化一次,对应的析构函数也只能被调用一次,然而这个地方却出现了两次。是不是很奇怪,问题的根因在于我们main可执行程序包含了mytest.a这个静态库,然后通过dlopen又加载了mytest.so这个动态库,也就是说,静态库中的TestClass全局对象会被分配一个内存,而动态库被加载时,也会被分配...
现在,如果您用全局对象构建了一个静态库,并且该全局对象没有从可执行文件中引用,则链接器不会将其拉...