C++:obj 文件的链接顺序重要吗?

Sco*_*ver 3 c++ linker visual-studio

以声明和定义简单函数的头文件和实现文件以及包含调用该函数的 main() 的第二个实现文件为例,编译器将生成两个目标文件。

1)当链接这些文件以生成可执行文件时,顺序重要吗?

这个问题的答案表明顺序并不重要。

该站点明确同意,并给出了使用 GCC 的示例。

2) 如果顺序很重要,那么像 Visual Studio 这样的 IDE 如何确定适当的链接顺序?

我清楚地记得在使用 gcc/g++ 构建时遇到未解决的符号错误,并且需要更改 makefile 中目标文件的顺序来解决此问题。但是,我可能记错了链接文件。

MSa*_*ers 6

目标文件的链接顺序并不重要。库顺序确实很重要,这是开发人员的责任。

老实说,链接器非常古老。现代语言没有链接器,但 GCC 尤其不遗余力地保持与过去的兼容性。