IN C ++ Builder(2009 - Windows 7)我创建了一个组件,其中包含一个带有静态成员变量的类的头文件 - 似乎有两个静态成员变量实例,如下所述。
我在一个类中有一个静态成员变量,例如。
class theclass {
static theclass *ref;
...
}
这是在class.h。
theclass *theclass::ref = NULL
现在我有一个组件,包含bpl中的标头和.cpp文件的链接,我还在我的主应用程序中包含此文件并链接到那里,在主应用程序中,theclass :: ref被初始化为一个新的像
这样的类的实例theclass *instance = new theclass().
我有一个应用程序,其中包含一些新组件。当从应用程序代码调用实例时,一切都很好,当从bpl中的代码调用实例时,它是一个NULL并且它崩溃了吗?似乎有两个静态变量,一个在bpl中,一个在main中 - 任何建议都会受到赞赏?
(可能应该提到这是我的第一个c ++构建器组件 - 编写了许多delphi组件)
[更新] 如果我关闭'使用运行时包构建'然后它可以工作 - 所以似乎与动态链接有关?
答案 0 :(得分:0)
您也可以在cpp文件中尝试#pragma package(smart_init,weak)
,因此只有此文件会静态链接。