c ++ builder bpl和静态成员有多个静态实例

时间:2012-01-20 23:53:21

标签: c++builder

IN C ++ Builder(2009 - Windows 7)我创建了一个组件,其中包含一个带有静态成员变量的类的头文件 - 似乎有两个静态成员变量实例,如下所述。

我在一个类中有一个静态成员变量,例如。

class theclass {
  static theclass *ref;
  ...
}

这是在class.h。

在theclass.cpp中我有初始化

theclass *theclass::ref = NULL

现在我有一个组件,包含bpl中的标头和.cpp文件的链接,我还在我的主应用程序中包含此文件并链接到那里,在主应用程序中,theclass :: ref被初始化为一个新的像

这样的类的实例
theclass *instance = new theclass().

我有一个应用程序,其中包含一些新组件。当从应用程序代码调用实例时,一切都很好,当从bpl中的代码调用实例时,它是一个NULL并且它崩溃了吗?似乎有两个静态变量,一个在bpl中,一个在main中 - 任何建议都会受到赞赏?

(可能应该提到这是我的第一个c ++构建器组件 - 编写了许多delphi组件)

[更新] 如果我关闭'使用运行时包构建'然后它可以工作 - 所以似乎与动态链接有关?

1 个答案:

答案 0 :(得分:0)

您也可以在cpp文件中尝试#pragma package(smart_init,weak),因此只有此文件会静态链接。