当我尝试在Visual Studio Express 2013中构建我的C ++ + SDL项目时,出现以下错误:
1>Main.obj : error LNK2019: unresolved external symbol "public: void __thiscall Game::run(void)" (?run@Game@@QAEXXZ) referenced in function _SDL_main
在Main我有#include "TestGame.h"
TestGame.h
包含
#include "Game.h"
struct TestGame : Game{ ... }
Game.h包含
struct Game{
...
void run();
}
void Game::run
在Game.cpp
中定义,其中还包含Game.h
然而我仍然收到错误。 (另外11人喜欢它)
我已经阅读了What is an undefined reference/unresolved external symbol error and how do I fix it?的全部内容,并没有提出任何建议似乎解决了我的问题。因此,我不相信我的问题是它的重复。
可以在https://github.com/xGeovanni/CPP-Game-Libs
找到完整的代码我很乐意回答任何必要的问题来帮助我解决这个问题。谢谢。
编辑:删除VC ++项目并将所有源文件添加到新文件后,此问题停止发生。
答案 0 :(得分:2)
<ClInclude Include="Game.cpp" />
这就是为什么Game.cpp不会被编译,它的标签只适用于#included文件。项目文件中只有三个文件具有所需的<ClCompile>
标记(Main.cpp,Player.cpp,TestGame.cpp)。
非常不清楚这是怎么发生的,一般不要手动编辑.vcxproj文件。要解决此问题,请右键单击解决方案资源管理器中的Game.cpp文件,属性,常规。更改&#34;项目类型&#34;属于&#34; C / C ++ Header&#34;到&#34; C / C ++编译器&#34;。对具有错误标记的其他.cpp文件重复此操作。您可以轻松地告诉哪些,当您右键单击它们时,它们会禁用“编译”菜单项。