在C ++ DLL中使用全局变量

时间:2012-01-05 18:53:13

标签: c++ windows dll

我有一个包含3个类的C ++ DLL。我在我的“stdafx”头文件中添加了一个静态布尔变量(因为我的所有类都包含它)并且我正在尝试使用它。虽然我的所有类都看到了我的变量,但它们似乎都有不同的实例。如果我在一次类中将变量设置为true,那么我会注意到它在另一个类中是假的。有什么办法可以创建一个只能在DLL中的所有类中使用的变量吗?

2 个答案:

答案 0 :(得分:4)

好吧,你把它标记为static,这就是发生了什么。相反,在标题中标记extern并在一个 TU中定义它。

不要修改stdafx;这不是你的。使用您自己的共享标题。

答案 1 :(得分:2)

您的变量是static,并且您在stdafx.h中声明了它,它包含在项目中的所有源文件中。这意味着每个翻译单元都将包含自己的变量副本,这正是您所看到的行为。

要解决此问题,请在stdafx.cpp

中声明变量
bool MyBool = false;

然后在extern

stdafx.h
extern bool MyBool;