我有一个全局函数指针列表,需要在启动时填充。顺序并不重要,也没有会使静态初始化复杂化的依赖关系。为了方便,我编写了一个类,在其构造函数中添加单个条目到该列表中,并通过宏在必要的地方分散全局实例化这个类。该方法的主要目标之一是消除外部明确引用每个此类实例的需求,而是允许需要在列表中注册内容的每个文件独立进行操作。看起来很整洁。
然而,当将这些对象放置在静态库中时,链接器会丢弃(或者从未链接进来)这些单元,因为它们中没有任何代码被明确引用。在编译单元中明确引用符号将是逆生产的,直接违反了该方法的主要目标之一。出于相同的原因,/INCLUDE 不是可接受的选项,/OPT:NOREF 与此问题实际上无关。
Metrowerks 有一个 __declspec 指令,GCC 有 -force_load,但我找不到 MSVC 的等效方法。
然而,当将这些对象放置在静态库中时,链接器会丢弃(或者从未链接进来)这些单元,因为它们中没有任何代码被明确引用。在编译单元中明确引用符号将是逆生产的,直接违反了该方法的主要目标之一。出于相同的原因,/INCLUDE 不是可接受的选项,/OPT:NOREF 与此问题实际上无关。
Metrowerks 有一个 __declspec 指令,GCC 有 -force_load,但我找不到 MSVC 的等效方法。