我有以下问题:我的(C++-)项目由几个子项目组成。在每个文件中,我都有几个文件,其中包含我想在启动时运行的代码。到目前为止,我的解决方案是使用静态变量,这些变量在初始化时调用相应的代码,如下所示:
// Foo.cpp
static TFooRegistry sFooRegistry; // does stuff in constructor.
在为每个子项目使用 dll 构建我的项目时,一切正常,代码按预期运行。然而,当静态链接子项目时,链接器确定 Foo.o 不包含从外部引用的任何代码,并将其优化掉。当然,我可以在其他地方添加对 sFooRegistry 的引用,但这很乏味且容易出错。
有什么(符合标准的)解决这个问题的方法?
好的,我可以在 mac/gcc 和 win/visual studio 上做什么?