2

我有一个静态库libStatic,它定义了一个像这样的全局变量

头文件libStatic/globals.h

extern int globvar;

代码文件libStatic/globals.cpp

int globvar = 42;

DLL libDynamic和可执行运行程序正在使用这个全局变量。此外,libDynamic在运行时链接到runner(通过LoadLibrary()GetProcAddress()和作品...)

我知道这将导致globvar被创建两次,一次在runner堆中,一次在libDynamic堆中,这当然是非常不可取的。

这附近有什么好的地方吗?如何确保libDynamicrunner使用相同globvar

4

1 回答 1

2

一个简单的方法是让.DLL指向可执行文件的全局变量。加载后,您将在该库中调用一个特殊函数(类似于SetGlobVar(int*))。这样,库将始终指向与.EXE.

于 2010-05-12T16:19:45.287 回答