【问题标题】:Class undefined reference [duplicate]类未定义引用[重复]
【发布时间】:2012-10-24 15:19:21
【问题描述】:

可能重复:
What is an undefined reference/unresolved external symbol error and how do I fix it?

这应该是一个简单的问题,但我仍然遇到问题。我看过类似的问题,但它们似乎比我要找的要复杂一些。

我正在使用 Code::Blocks 10.05。

我的类文件有一个未定义的引用。我知道这是一个链接器错误,但我不确定如何修复它。恐怕我对链接文件不太了解。

s\Desktop\the cool container\Test 1\Class2.o:Class2.cpp|| undefined reference to `Burrito::Burrito()'|
||=== Build finished: 1 errors, 0 warnings ===|

我所有的文件都在同一个文件夹中。我的对象什么都不做,我只是在尝试,我不应该因为从另一个类创建对象而出错。

是的,这是来自 TheNewBoston 的教程……他能够完成这项工作,所以我应该能够完成这项工作。

如果我在 Class2.cpp 中包含 #include "Burrito.cpp" 则它可以工作,但他没有包含它。


------------Class2.cpp------

#include <iostream>
#include "Burrito.h"
using namespace std;
int main(){

  Burrito Bo;
    return 0;
}

---------------Burrito.h----------------

#ifndef BURRITO_H
#define BURRITO_H


class Burrito
{
    public:
        Burrito();

};

#endif // BURRITO_H

---------------Burrito.cpp------

#include "Burrito.h"
#include<iostream>

using namespace std;
Burrito::Burrito()
{

}

【问题讨论】:

  • 很可能是this - 你没有编译或链接Burrito.cpp
  • 请详细说明您编译文件以生成可执行文件的方式...
  • 我只是认为我可以构建它并运行它我没有意识到我必须进行任何特殊的编译。我会调查的。

标签: c++ class reference codeblocks linker-warning


【解决方案1】:

如果我在 Class2.cpp 中包含 #include "Burrito.cpp" 则它可以工作,但他没有包含它。

这很少(我会说永远不会)解决方案。不要#include 应该是其他源文件中的源文件。解决办法是把需要编译的文件全部编译,让链接器处理链接问题。

你没有编译 Burrito.cpp,所以你当然有链接问题。解决方案很简单:编译 Burrito.cpp 并将 Burrito.o 添加到您提供给链接器的文件集中。或者,您可以将 Class2.cpp 和 Burrito.cpp 都提供给编译器,创建一个可执行文件而不是目标文件作为输出。

【讨论】:

  • 我读过类似的东西,但我将如何编译 Burrito.cpp?我想我会在以后有时间的时候研究一下。
猜你喜欢
  • 2015-09-24
  • 2020-06-23
  • 2013-05-03
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 2012-05-01
  • 1970-01-01
相关资源
最近更新 更多