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

时间:2015-01-02 21:20:44

标签: c++ visual-studio-2013 include unresolved-external

我收到了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

1 个答案:

答案 0 :(得分:0)

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

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

希望这可以帮助任何体验过这种情况的人。