我有一个.cpp
文件(我们称之为statinit.cpp
)编译并链接到我的可执行文件中,使用gcc
. 我的main()
功能不在.statinit.cpp
statinit.cpp
有一些我需要运行的静态初始化。但是,我从不明确引用statinit.cpp
mymain()
中的任何内容,或者它引用的任何内容。发生的事情(我想)是从创建的链接对象statinit.cpp
永远不会在运行时加载,所以我的静态初始化永远不会运行,导致代码其他地方出现问题(这很难调试,但我最终跟踪它)。
是否有标准库函数、链接器选项、编译器选项或可以让我强制该对象在运行时加载而不引用其元素之一的东西?
我想做的是在 statinit.cpp 中定义一个虚拟函数,在main()
看到的头文件中声明它,然后从main()
. 但是,这是一个非常丑陋的解决方案,我非常想避免对 statinit.cpp 本身进行更改。
谢谢,丹尼尔