c++ - 向项目添加类后对 'main' 的 undefined reference

标签 c++ linux gcc reference program-entry-point

我在使用代码块编写的项目时遇到问题。

我制作了新的控制台应用程序并构建了它。 但是当我添加一个新类 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;
}

显示.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

最佳答案

我在 64 位 Ubuntu 14.04 上使用 13.12。 我遇到了同样的问题,这似乎是类添加对话框的罪魁祸首。 使用它来创建类文件,但不要将它添加到项目中。 右键单击“项目”选项卡(窗口中的左 Pane )中的项目标题,然后使用上下文菜单中的“添加文件”。 那么应该可以编译。

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

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”后,新类的编译行变为:

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 开关之前的 -I 是什么?

它没有出现在构建选项对话框中,也没有出现在我能找到的任何其他地方,所以如果它出现在那里,你如何删除它? 这可能与我用于设置选项的 wxconfig 脚本有关 - 但据我所知,它的调用没有任何变化。 它与 :

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

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

关于c++ - 向项目添加类后对 'main' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537874/

相关文章:

c++ - 在 Qt 桌面应用程序上运行 Selenium

c++ - X11 和 nVidia 驱动程序的奇怪 EGL 行为

linux - 当 GLEW_ARB_framebuffer_object 不为零时,为什么 glFramebufferTexture 是 NULL 指针?

linux - Synology DSM Backup - 配置文件

linux - 无法在 Linux 上安装 perl 模块

c++ - 为什么重启后串口读取不起作用?

c++ - 有没有办法标记不可重入 C 库调用的使用?

linux - 如何显示/proc 中文件的大小?它不应该是零大小

c++ - 如何将 gcc 调试符号从 .so 和 .a 文件中移出?

c++ - 这是什么意思 : "error: invalid combination of multiple type-specifiers"