sde*_*dev 4 c++ windows singleton mfc
在我的GUI应用程序(MFC)中,我使用dll在屏幕上显示某些内容.我有一个静态库,它有一个单例类.例如:sing.lib.我在应用程序(exe)项目和dll项目中包含sing.lib(coz都使用这个单例类)
问题是进入exe的实例和dll是不同的.两者都调用构造函数!! 请参阅单例类代码段.
class A
{
private:
A();
virtual ~A();
static A* m_pInstance;
public:
static A* GetInstance()
{
if (NULL == m_pInstance)
{
m_pInstance = new A();
}
return m_pInstance;
}
}
Run Code Online (Sandbox Code Playgroud)
如果要在dll和exe之间共享单例实例,请将其定义放在动态链接库中,而不是静态库中.
通常,如果您希望某些数据是全局且唯一的,则不应将其放在静态库中.
考虑
//static lib
int CurrentCounter =0;
int getNextCounter()
{
return CurrentCounter;
}
Run Code Online (Sandbox Code Playgroud)
静态库中的这样的代码.在你的情况下,如果exe和dll链接到这个库,每个都将获得自己的CurrentCounter.因此exe和dll可以同时具有不同的CurrentCounter值.
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |