许多项目的解决方案上的C ++链接错误

时间:2017-08-18 11:14:58

标签: c++ visual-studio linker lnk2019 lnk2001

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

solution

每个项目都包含.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$0 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文件路径是正确的,我可以看到intellisense中的所有选项。

我会批评可能有助于我解决此问题的任何想法。 感谢

1 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您只有一个项目的主要

如果这是正确的,那么尝试将所有其他项目构建为静态库(.lib)(或共享库(.dll))并将引用构建到主体中项目(表格)应该有效。

现在您正尝试从12other .exe构建可执行文件(.exe)。它无法运作。