未解析的对已定义的构造函数的引用

Unresolved reference to constructor which is defined

我收到一个 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

按照@inetknght 的建议尝试创建 MCVE 之后(感谢 BTW),我发现它实际上是 Visual Studio Express 2013 中的一个错误。我将所有源文件复制到新项目,所以我可以继续删除东西以获得最小的示例,但是它在新项目中编译得很好。

在尝试修复原始项目时,我清理了解决方案,手动删除了目标文件,删除了项目中的.sdf 文件。 None 其中有效。然后我尝试从项目中删除 TestLanguage.cpp 文件并将其添加回来 - 它起作用了。

希望这对遇到此问题的其他人有所帮助。