引用构造函数时链接失败

linkage fails when referencing a constructor

本文关键字:失败 链接 构造函数 引用      更新时间:2023-10-16

我有两个源文件,其中一个中有一个来自我自己的类的静态成员foo。当我将其编译为目标文件时,编译器会生成一个 .ctors 部分,并在其中生成一个调用构造函数的函数,让我们将其称为 _GLOBAL__SUB_I_FOO。

在第二个源文件中,我尝试自己调用此构造函数:

int _GLOBAL__SUB_I_FOO();
int bar(){
   _GLOBAL__SUB_I_FOO();
}

当我链接这两个对象时,有一个未定义的引用来自第二个文件的_GLOBAL__SUB_I_FOO。 当我使用 --reloccatable 进行链接以查看出了什么问题时,我可以看到原始构造函数已重命名为 _GLOBAL__SUB_I_FOO_0 以避免"冲突"(这是故意的(。我能做些什么来修复它? 我正在使用 gcc 7.3.0

若要执行以前在静态对象的构造函数中的代码,请将其移动到 init() 函数中,然后从构造函数(以及需要它的任何其他位置(调用该代码。

相关文章: