许多项目的 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)。不行。
我创建了一个包含以下形式的 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)。不行。