在向项目添加类之后对“main”的未定义引用

时间:2014-07-02 17:55:53

标签: c++ linux gcc reference main

我遇到了用代码块编写的项目的问题。

我已经制作了新的控制台应用程序。 但是当我添加一个新类C :: B时,我会抛出一个错误:

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o||In function `_start':
(.text+0x20)||undefined reference to `main'

我不知道出了什么问题。

的main.cpp

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

int main()
{
    Display newDisplay;
    std::cout << "Hello world!" << std::endl;
    return 0;
}

display.cpp

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

Display::Display()
{
    std::cout << "Constructor" << std::endl;
}

Display::~Display()
{
    std::cout << "Destructor" << std::endl;
}

display.h

#ifndef DISPLAY_H
#define DISPLAY_H


class Display
{
    public:
        Display();
        virtual ~Display();

    protected:
    private:
};

#endif // DISPLAY_H

2 个答案:

答案 0 :(得分:4)

我在64位Ubuntu 14.04上使用13.12。 我得到了同样的问题,它似乎是应该责备的类添加对话框。 使用它来创建类文件,但不要将其添加到项目中。 右键单击&#39; Projects&#39;中的项目标题。选项卡(窗口中的左窗格)并使用&#39;添加文件&#39;从上下文菜单中。 那应该编译好。

在添加新类之前,这是一个典型的编译行:

g++ -Wall -g -I/media/Data/programming/source/wxWidgets-3.0.2/build/ubuntu14.04/debug/lib/wx/include/gtk2-unicode-3.0-d -I/media/Data/programming/source/wxWidgets-3.0.2/include -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread  -c /media/Data/programming/projects/wx/Xperiments/XperimentsApp.cpp -o ./bin/Ubuntu14/debug/XperimentsApp.o

添加一个完全空的课程后,MyFileTree&#39;新类的编译行变为:

g++ -Wall -g -I/media/Data/programming/source/wxWidgets-3.0.2/build/ubuntu14.04/debug/lib/wx/include/gtk2-unicode-3.0-d -I/media/Data/programming/source/wxWidgets-3.0.2/include -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -I -c /media/Data/programming/projects/wx/Xperiments/MyFileTree.cpp -o ./bin/Ubuntu14/debug/MyFileTree.o

需要一段时间来发现差异不是吗?

什么是迷路 - 我刚刚在-c开关之前?

它没有显示在构建选项对话框中或我能够找到的任何其他地方,如果它进入那里,你如何删除它? 这可能与我用于设置选项的wxconfig脚本有关 - 但是我可以看到它的调用没有任何改变。 它没有改变:

/media/Data/programming/source/wxWidgets-3.0.2/build/ubuntu14.04/debug/wx-config --cflags --debug=yes

正如我所说,不要通过类创建对话框添加到项目中,使用管理窗口手动执行。

答案 1 :(得分:1)

今天遇到同样的问题。

使用Projects-&gt;解决它构建选项 - &gt;搜索目录

然后将编译器和链接器选项设置为&#34;仅使用项目选项&#34;