在C ++ DLL中使用extern

时间:2013-11-01 15:50:14

标签: c++ windows dll static extern

我声明然后在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的当前使用大部分时间都有效,但我认为在变量实例化中我会观察到延迟或类似情况,但应始终在加载时进行实例化。我正在调查这个问题一个星期了,我找不到解决办法。

0 个答案:

没有答案