编译c ++时对main的未定义引用

时间:2014-05-03 16:12:01

标签: c++

我正在尝试编译我的类,但是我收到以下错误

/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../lib64/crt1.o: In function `_start':
   (.text+0x20): undefined reference to `main'
    collect2: error: ld returned 1 exit status
    make: *** [try] Error 1

但是,我在一个名为Hash.cpp的类中包含了一个main函数。这是makefile:

C++ = g++
CFLAGS = -c -g

all: hash                                                                               

hash: Hash.o ML_hash.o
        $(C++) -o hash Hash.o ML_hash.o

%.o: %.cpp
        $(C++) $(CFLAGS) $*.cpp

当我打电话给#34;打扫干净"和"制作"但是,输出可执行文件" hash"仍将生成。如果在makefile中列出了Hash.cpp并包含一个main函数,为什么我会收到以下错误?

编辑:

抱歉....我的意思是说主要功能。这是主要的课程:

#include "HashNode.h"
#include "MLH_back1.h"

#include <iostream>

using std::cout;
using std::endl;

int main()
{
    doStuff();
}

如果我没有发布足够的代码,我很抱歉。通常当我提出问题时,我会尝试发布我认为问题发生的地方,因此只列出相关信息而不是我的所有课程。通过说&#34;我有一个主要功能&#34;我想说是的,我确实在一个名为Hash.cpp的类中编写了一个main函数。我只是想要尝试概念性地理解为什么当我有一个main函数时会发生这个错误。我已经查看了其他问题,所以我不想复制。我没有意识到人们会如此沮丧......

1 个答案:

答案 0 :(得分:1)

  

但是,我确实在一个名为Hash.cpp

的类中包含了一个主类

在C ++中,你需要有一个main函数,而不是像其他OOP语言中出现的类或类中的方法。

这是您的计划的切入点。这不太公平,因为在调用main函数时会为您完成一些预处理,但这是您编写的条目。

最琐碎的C ++程序是这样的:

int main() { return 0; }

如果出现相同的错误,很可能是你混合了32位和64位,在这种情况下,这些问题也可能发生在&#34;条目&#34;点。