我最近开始学习一些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
(是的,我可以复制粘贴我拥有的来源并解决问题,但后来学习的重点是什么)
答案 0 :(得分:0)
在main.cpp
文件中,您对CompareColour
函数有一个前向声明,但它从未实现过。你在main.cpp
中所拥有的内容告诉编译器“我保证我会告诉你以后如何做到这一点,现在假设它存在”,所以它为该函数创建了一个“外部符号”。然后你“违背你的承诺”并且永远不会告诉它如何做CompareColour
,因此它会收到链接错误,因为它无法将该外部符号链接到任何代码。
所以看看TakeScreenShot
函数。在第5行,它有一个向前减速。然后在第42行开始实现它。因此,当在第91行调用TakeScreenShot
时,编译器使用仅来自第5行的信息创建“外部符号”,该信息指向空的代码点。然后当它完成时,它返回并在第42行看到函数的实现并将其放在该外部符号的目的地。然后,当链接器浏览文件时,它链接这两个代码点,一切都很愉快。当链接器遇到它时,对CompareColor
的调用仍然指向空代码,因为没有实现,因此你的错误。
这是实际发生的过度简化的版本,但希望它有意义。