许多项目的 C++ link 错误解决方案

C++ link errors on solution with many projects

我创建了一个包含以下形式的 WIN32 控制台应用程序项目的 C++ 解决方案:

每个项目都包含 .cpp 和 .h 文件,而在 Forms 中只有 main.cpp 包含所有 .h 文件的包含行。

当我尝试构建单个项目时,我得到了 LNK2019 - 未解析的外部符号,当我尝试从 main 编译时,它似乎出现在每个项目中。

我阅读了很多关于它的问题,我尝试处理额外的依赖项或构建顺序,但似乎没有任何区别。

我在这里附上单个项目(按钮)的错误 - 我想一旦我发现一个项目的问题,其余的将是相同的。

Error   1   error LNK2019: unresolved external symbol "public: void __thiscall Graphics::clearScreen(void)" (?clearScreen@Graphics@@QAEXXZ) referenced in function "public: virtual void __thiscall Button::keyDown(int,char)" (?keyDown@Button@@UAEXHD@Z)  D:\Forms\Button\Button.obj  Button
Error   2   error LNK2019: unresolved external symbol "public: void __thiscall Graphics::setBackground(enum Color)" (?setBackground@Graphics@@QAEXW4Color@@@Z) referenced in function "public: virtual void __thiscall Button::draw(class Graphics,int,int,unsigned int)" (?draw@Button@@UAEXVGraphics@@HHI@Z)  D:\Forms\Button\Button.obj  Button
Error   3   error LNK2019: unresolved external symbol "public: void __thiscall Graphics::setForeground(enum Color)" (?setForeground@Graphics@@QAEXW4Color@@@Z) referenced in function "public: virtual void __thiscall Button::draw(class Graphics,int,int,unsigned int)" (?draw@Button@@UAEXVGraphics@@HHI@Z)  D:\Forms\Button\Button.obj  Button
Error   4   error LNK2019: unresolved external symbol "public: void __thiscall Graphics::write(int,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?write@Graphics@@QAEXHHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "public: virtual void __thiscall Button::draw(class Graphics,int,int,unsigned int)" (?draw@Button@@UAEXVGraphics@@HHI@Z)  D:\Forms\Button\Button.obj  Button
Error   5   error LNK2019: unresolved external symbol "public: __thiscall Control::Control(void)" (??0Control@@QAE@XZ) referenced in function "public: __thiscall Button::Button(int)" (??0Button@@QAE@H@Z) D:\Forms\Button\Button.obj  Button
Error   6   error LNK2019: unresolved external symbol "public: __thiscall Control::~Control(void)" (??1Control@@QAE@XZ) referenced in function __unwindfunclet$??0Button@@QAE@H@Z[=11=] D:\Forms\Button\Button.obj  Button
Error   7   error LNK2001: unresolved external symbol "public: virtual void __thiscall Control::getAllControls(class std::vector<class Control *,class std::allocator<class Control *> > *)" (?getAllControls@Control@@UAEXPAV?$vector@PAVControl@@V?$allocator@PAVControl@@@std@@@std@@@Z) D:\Forms\Button\Button.obj  Button
Error   8   error LNK2001: unresolved external symbol "public: virtual void __thiscall Control::setWidth(int)" (?setWidth@Control@@UAEXH@Z) D:\Forms\Button\Button.obj  Button
Error   9   error LNK2001: unresolved external symbol "public: virtual void __thiscall Control::setValue(int)" (?setValue@Control@@UAEXH@Z) D:\Forms\Button\Button.obj  Button
Error   10  error LNK2001: unresolved external symbol "public: virtual void __thiscall Control::SetForeground(enum Color)" (?SetForeground@Control@@UAEXW4Color@@@Z)    D:\Forms\Button\Button.obj  Button
Error   11  error LNK2001: unresolved external symbol "public: virtual void __thiscall Control::SetBackground(enum Color)" (?SetBackground@Control@@UAEXW4Color@@@Z)    D:\Forms\Button\Button.obj  Button
Error   12  error LNK2019: unresolved external symbol "public: void __thiscall Control::drawBackground(void)" (?drawBackground@Control@@QAEXXZ) referenced in function "public: virtual void __thiscall Button::draw(class Graphics,int,int,unsigned int)" (?draw@Button@@UAEXVGraphics@@HHI@Z) D:\Forms\Button\Button.obj  Button
Error   13  error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup   D:\Forms\Button\MSVCRTD.lib(crtexe.obj) Button
Error   14  error LNK1120: 13 unresolved externals  D:\Forms\Debug\Button.exe   Button

.h 文件路径正确,我可以在智能感知中看到所有选项。

我会感谢任何可能帮助我解决此问题的想法。 谢谢

因此,如果我理解正确的话,您只有一个带有 main 的项目?

如果这是正确的,那么尝试将所有其他项目构建为静态库(.lib)(或共享库(.dll))和参考 将它们添加到您的主项目(Forms)中,它应该可以正常工作。

现在您正在尝试从 12other .exe 构建可执行文件 (.exe)。不行。