链接器工具错误 LNK1237
在代码生成过程中,编译器引入了对符号“symbol”的引用,该符号是在使用 /GL 编译的模块“module”中定义的
注解
在代码生成过程中,编译器不应引入之后解析为 /GL
编译定义的符号。 symbol
是引入并在之后解析为定义(通过使用 /GL
编译)的一个符号。
有关详细信息,请参阅 /GL
(全程序优化)。
若要解析 LNK1237,请勿使用 /GL
编译符号或使用 /INCLUDE
(强制符号引用)来强制引用符号。
示例
以下示例生成 LNK1237。 若要解决此错误,请勿初始化 LNK1237_a.cpp
中的数组并将 /include:__chkstk
添加到链接命令。
源文件 LNK1237_a.cpp
:
// LNK1237_a.cpp
int main() {
char c[5000] = {0};
}
源文件 LNK1237_b.cpp
:
// LNK1237_b.cpp
// compile with: /GS- /GL /c LNK1237_a.cpp
// processor: x86
// post-build command: (lib LNK1237_b.obj /LTCG & link LNK1237_a.obj LNK1237_b.lib /nodefaultlib /entry:main /LTCG)
extern "C" void _chkstk(size_t s) {}