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