未定义的对构造函数的引用 [英] Unresolved reference to constructor which is defined

查看:1050
本文介绍了未定义的对构造函数的引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在函数_main中引用未解析的外部符号public:__thiscall TestLanguage :: TestLanguage(void)(?? 0TestLanguage @@ QAE @ XZ)



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


解决方案

尝试创建 MCVE 建议由@inetknght(感谢BTW),我发现它实际上是一个错误在Visual Studio Express 2013.我复制了所有我的源文件到一个新的项目,所以我可以保持删除的东西,得到最小的例子,但它编译良好的新项目。



当试图修复原始项目,我清理解决方案,手动删除对象文件,删除项目中的.sdf文件。没有工作。然后我试图从项目中删除TestLanguage.cpp文件,并添加回来 - 它的工作。



希望这将帮助任何其他体验这个。

I am getting an unresolved external symbol "public: __thiscall TestLanguage::TestLanguage(void)" (??0TestLanguage@@QAE@XZ) referenced in function _main

The TestLanguage constructor is defined as far as I can see, however obviously the compiler can't see it. My only conclusion is that there is some sort of inclusion problems (e.g. circular includes).

I have made a diagram of the includes for each translation unit below, however I can't see any problems. Any guidance would be appreciated.

Includes:

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

解决方案

After attempting to create a MCVE as suggested by @inetknght (thanks BTW), I discovered that it was actually a bug in Visual Studio Express 2013. I copied all my source files to a new project, so I could keep removing stuff to get the smallest example, however it compiled fine in the new project.

When attempting to fix the original project, I cleaned the solution, manually deleted the object files, deleted the .sdf file in the project. None of that worked. Then I tried removing the TestLanguage.cpp file from the project and adding it back - and it worked.

Hopefully this will help any others who experience this.

这篇关于未定义的对构造函数的引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆