1

我有一堆包含静态变量的 cpp 文件(应该没有头文件)。我的 Visual Studio 2008 编译器似乎忽略了这些静态变量 - 我该如何解决?

更多细节:

  • 我有一个具有静态字段 allInstances 的抽象类;当构造我的类的“具体”实例时(它发生在实例化 cpp 文件中的静态变量时),指向它的指针被 push_back'ed 到 allInstances 中。
  • Cpp 文件包含从我的抽象类派生的类;它们的实现需要保留在 cpp 文件中,因为它们只能通过 allInstances 调用
  • 我的抽象类 cpp 文件位于在静态库中编译的文件夹(项目)中
  • 此静态库由编译 xll 的项目使用

当 cpp 文件位于 xll 项目中时,一切都很好。但是当我将 cpp 文件移动到一个单独的文件夹中时(需要这样做,因为 excel 现在不是唯一的界面)我的静态变量不再被实例化。

我有很多这些 cpp 文件,并将它们全部包含在每个 xll、exe、pyd、dll 等项目中。

有任何想法吗?提前谢谢了。

4

1 回答 1

3

您必须告诉链接器相应的目标文件是程序的一部分。通常,这是通过将它们指定为目标文件来完成的,而不是将它们放入库中;根据定义,库中的目标文件只有在解析外部引用时才会成为程序的一部分。

于 2012-05-25T15:50:59.590 回答