令人困惑和愚蠢的LNK2019错误

时间:2016-07-02 19:06:39

标签: c++ linker

这是第一个文件

extern void init();

int main()
{
    init();
}

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

inline void init()
{
  return;
}

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

  

test.obj:错误LNK2019:函数_main

中引用的未解析的外部符号“void __cdecl init(void)”(?init @@ YAXXZ)

1 个答案:

答案 0 :(得分:2)

从C ++ 11 3.2 / 3“一个定义规则”:

  

内联函数应在每个使用它的翻译单元中定义

您在包含main()的翻译单元中违反了该要求。 (或从inline

的定义中删除init()