我声明然后在DLL中实例化一个静态变量。
// DLL.h
class A
{
//...
};
static A* a;
// DLL.cpp
A* a = new A;
到目前为止,非常好......我被建议使用extern
而不是static
。
extern A* a; // in DLL.h
没问题,但必须在某处声明extern
变量。我有无效的存储类成员。
换句话说,我以前做的是在源文件中声明一个变量,如下所示:
// In src.cpp
A a;
然后extern
在同一项目的另一个源文件中声明它:
// In src2.cpp
extern A a;
所以它在链接时是同一个对象 a 。也许这不是正确的事情?
那么,在哪里声明现在是extern的变量?
注意我使用静态声明,以便在加载dll后立即查看变量。
请注意,static
的当前使用大部分时间都有效,但我认为在变量实例化中我会观察到延迟或类似情况,但应始终在加载时进行实例化。我正在调查这个问题一个星期了,我找不到解决办法。