我在具有 2 个 DLLS 的解决方案上使用 VS2010,并且我正在尝试定义一个要在两个 DLLS 中使用的全局变量。
我有以下代码:
header.h
namespace A
{
extern DLL_A int myInt;
}
在 DLL A 的 a.cpp 文件中:
#include "header.h"
using namespace A;
DLL_A int A::myInt = 5; //initialisation
在 DLL A 的另一个 b.cpp 文件中:
#include "header.h"
using namespace A;
//use myInt for computations in some method, eg myInt++; etc
DLL_A 像往常一样定义:
#ifdef SOME_DEFINE
# define DLL_A __declspec(dllexport)
# else
# define DLL_A __declspec(dllimport)
# endif
然而发生的情况是,在 b.cpp 中调试时,我在监视窗口中看到 &A::myInt 和 &myInt 不同,这意味着(未知)“myInt”变量用于计算,而 A::myInt 是正确初始化为 5。
有人可以向我解释发生了什么以及如何解决这个问题吗?我看不出如何正确链接,因为我创建了 2 个不同的外部变量,而我只初始化了一个。
编辑 :
如果我改变
DLL_A int A::myInt = 5; //initialisation
为了
DLL_A int myInt = 5; //initialisation
它不会链接
谢谢