提问人:brettwhiteman 提问时间:1/3/2015 最后编辑:Captain Obvliousbrettwhiteman 更新时间:1/3/2015 访问量:658
对已定义的构造函数的未解析引用 [duplicate]
Unresolved reference to constructor which is defined [duplicate]
问:
我得到了一个unresolved external symbol "public: __thiscall TestLanguage::TestLanguage(void)" (??0TestLanguage@@QAE@XZ) referenced in function _main
据我所知,构造函数是定义的,但显然编译器看不到它。我唯一的结论是存在某种包含问题(例如循环包含)。TestLanguage
我已经为下面的每个翻译单元制作了包含图,但是我看不出任何问题。任何指导将不胜感激。
包括:
Test.cpp
Expression.h
Operation.h
Token.h
CPU.h
Operation.h
TestLanguage.h
ILanguage.h
TLOperators.h
IOperator.h
Operation.h
Token.h
TestLanguage.cpp
TestLanguage.h
ILanguage.h
TLOperators.h
IOperator.h
Operation.h
Token.h
TLOperators.cpp
TLOperators.h
IOperator.h
Operation.h
Token.h
Expression.h
Operation.h
Token.h
CPU.h
Operation.h
CPU.cpp
CPU.h
Operation.h
Operation.h
Expression.cpp
Expression.h
Operation.h
Token.h
Util.h
IOperator.h
Operation.h
Token.h
CPU.h
Operation.h
ILanguage.h
Operation.cpp
Operation.h
Token.cpp
Token.h
答:
0赞
brettwhiteman
1/3/2015
#1
在尝试按照@inetknght的建议创建 MCVE 后(顺便说一句),我发现它实际上是 Visual Studio Express 2013 中的一个错误。我将所有源文件复制到一个新项目中,因此我可以继续删除内容以获得最小的示例,但是它在新项目中编译得很好。
尝试修复原始项目时,我清理了解决方案,手动删除了对象文件,删除了项目中的 .sdf 文件。这些都行不通。然后我尝试从项目中删除 TestLanguage.cpp 文件并将其添加回去 - 它起作用了。
希望这将帮助任何经历过这种情况的人。
评论
1赞
Captain Obvlious
1/3/2015
听起来有问题的源文件已从构建中排除。
1赞
Ofek Shilon
6/15/2015
听起来你手下有一个小的一致的复制品。在连接时报告并让 MS 进行调查怎么样?在你这样做之前,你不能确定它确实是一个 VS 错误。
评论