LNK2019未解析的ext符号错误(包括项目文件)

时间:2013-05-04 19:02:41

标签: c++ lnk2019

我最近开始学习一些C(在youtube上观看了“Buckys C ++编程教程”的前30个视频),之后我认为我对基础有了一点了解我制作d3d hacks的教程(如果你知道它就会逃跑)等等。

所以我有我正在尝试编写的内容的来源,它工作正常,但我无法弄清楚为什么我得到"LNK2019 unresolved external symbol error"

我很确定错误是我的main.cpp无法读取我告诉它的内容。 (我只通过谷歌搜索和论坛搜索了一段时间。)

  

“错误3错误LNK2019:未解析的外部符号”bool __cdecl   CompareColour(struct tagRGBQUAD *,int,int,int,int)“   (?CompareColour @@ YA_NPAUtagRGBQUAD @@ HHHH @ Z)在函数中引用   “void __cdecl ScanBMP(类ScanContents *)”   (?ScanBMP @@ YAXPAVScanContents @@@ Z)C:\ Users \ Sherm \ Desktop \ Current   project \ Color aimbot \ Color aimbot \ main.obj Color aimbot“

这是错误。我已经多次检查了我的include / lib,并且main.cpp包含在项目中。

另外:这是项目文件:http://www.mediafire.com/?3gy76bqvf687h4i

(是的,我可以复制粘贴我拥有的来源并解决问题,但后来学习的重点是什么)

1 个答案:

答案 0 :(得分:0)

main.cpp文件中,您对CompareColour函数有一个前向声明,但它从未实现过。你在main.cpp中所拥有的内容告诉编译器“我保证我会告诉你以后如何做到这一点,现在假设它存在”,所以它为该函数创建了一个“外部符号”。然后你“违背你的承诺”并且永远不会告诉它如何做CompareColour,因此它会收到链接错误,因为它无法将该外部符号链接到任何代码。

所以看看TakeScreenShot函数。在第5行,它有一个向前减速。然后在第42行开始实现它。因此,当在第91行调用TakeScreenShot时,编译器使用仅来自第5行的信息创建“外部符号”,该信息指向空的代码点。然后当它完成时,它返回并在第42行看到函数的实现并将其放在该外部符号的目的地。然后,当链接器浏览文件时,它链接这两个代码点,一切都很愉快。当链接器遇到它时,对CompareColor的调用仍然指向空代码,因为没有实现,因此你的错误。

这是实际发生的过度简化的版本,但希望它有意义。