【问题标题】:A baffling and silly LNK2019 error一个令人费解和愚蠢的 LNK2019 错误
【发布时间】:2016-07-02 19:06:38
【问题描述】:

这是第一个文件

extern void init();

int main()
{
    init();
}

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

inline void init()
{
  return;
}

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

test.obj : 错误 LNK2019: 函数 _main 中引用的未解析外部符号“void __cdecl init(void)”(?init@@YAXXZ)

【问题讨论】:

  • 你的建议就像一个魅力!不知道该怎么感谢伯尔先生,就好像你差点救了我的命。

标签: c++ linker


【解决方案1】:

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

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

您在包含main() 的翻译单元中违反了该要求。 (或者从init()的定义中去掉inline

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2013-02-04
    • 2015-01-01
    相关资源
    最近更新 更多