一个令人困惑和愚蠢的LNK2019错误

A baffling and silly LNK2019 error

本文关键字:错误 LNK2019 一个      更新时间:2023-10-16

第一个文件

extern void init();
int main()
{
    init();
}

现在是第二个也是最后一个文件

inline void init()
{
  return;
}

这两个c++文件是在Visual Studio 2015下作为Win32控制台应用程序项目构建的。.pdb文件在编译后生成。那么为什么链接器不能解析外部函数init()呢?

测试。obj:错误LNK2019:无法解析的外部符号"void __cdecl init(void)"(? init@yaxxz)在函数_main中引用

源自c++ 113.2/3 "One definition rule":

一个内联函数应该定义在每一个翻译单元中,在该单元中使用

在包含main()的翻译单元中,您违反了该要求。(或将inlineinit()的定义中去掉)