0

我声明然后在 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大部分时间都有效,但我认为我在变量实例化中观察到延迟或类似的东西,而它应该始终在加载时实例化。我正在调查这个问题一个星期,但我找不到任何解决方案。

4

0 回答 0