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

C++ 未解析对已定义构造函数的引用,c++,visual-studio-2013,include,unresolved-external,C++,Visual Studio 2013,Include,Unresolved External,我得到一个未解析的外部符号“public:\u thiscall TestLanguage::TestLanguage(void)”(??0TestLanguage@@QAE@XZ)在功能_main中引用 据我所知,TestLanguage构造函数是被定义的,但是编译器显然看不到它。我唯一的结论是存在某种包含问题(例如,循环包含) 我已经为下面的每个翻译单元制作了一个包含图,但是我看不出有任何问题。任何指导都将不胜感激 包括: Test.cpp Expression.h

我得到一个
未解析的外部符号“public:\u thiscall TestLanguage::TestLanguage(void)”(??0TestLanguage@@QAE@XZ)在功能_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的建议创建一个bug之后(顺便说一句),我发现它实际上是Visual Studio Express 2013中的一个bug。我将所有的源文件复制到一个新项目中,这样我就可以不断删除一些内容以获得最小的示例,但是在新项目中编译得很好

尝试修复原始项目时,我清理了解决方案,手动删除了目标文件,删除了项目中的.sdf文件。这些都不管用。然后,我尝试从项目中删除TestLanguage.cpp文件并将其添加回项目中,结果成功了


希望这将有助于其他有此经历的人。

您有MCVE吗@我会试着召集一个。我还没有投反对票(现在:),但这是一个合理的问题吗?你没有给我们任何有用的信息。包含源文件和头文件的巨树没有用处,因为1。我们无法知道它是否正确。没有任何东西表明您是否提供了有问题的构造函数的定义。@Brett我没有重复投票。我选择了一个“离题”选项,一个要求MCVE的选项。这是stackoverflow关闭系统的一个工件,只有一个原因出现(可能是多数原因,我不同意)。但是在你问题的顶部有一个链接。通常我相信OP会提供正确的信息,但你发布的内容很容易出错。而且,即使我不怀疑任何包含的东西,它又有什么用处呢?发生此错误的原因是链接器找不到定义,这使得有关哪些转换单元看到类定义的信息不相关。没有人希望你发布一个完美的问题,否则就不需要评论部分了。但我们希望你能提供相关信息。我知道你不是故意保留它的,但是抱怨否决票并没有任何帮助。听起来有问题的源文件被排除在构建之外。听起来你手头有一个小的一致的复制。在connect报告并让MS调查如何?除非您这样做,否则您无法确定它确实是一个VS错误。