编译c++时对main的未定义引用
Undefined reference to main when compiling 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
当我调用"make clean"answers"make"时,仍然会生成输出的可执行文件"hash"。如果Hash.cpp在makefile中列出并包含一个main函数,为什么我得到下面的错误?
编辑:对不起…我想说的是main函数。下面是主类:
#include "HashNode.h"
#include "MLH_back1.h"
#include <iostream>
using std::cout;
using std::endl;
int main()
{
doStuff();
}
如果我没有发布足够的代码,我很抱歉。通常当我问问题的时候,我试着把我认为问题发生的地方贴出来,所以只列出相关的信息,而不是我所有的课程。通过说"我有一个主函数",我的意思是说我确实在一个名为Hash.cpp的类中编写了一个主函数。我只是试图得到一个概念性的理解,为什么这个错误会发生,当我有一个主函数。我已经看了其他问题,所以我不想重复。
但是,我确实在一个名为Hash.cpp的类中包含了一个主类
在c++中,你需要有一个main函数,而不是像在其他OOP语言中那样在类中有一个类或方法。
这是程序的入口点。这是不太公平的,因为在调用main函数的地方为您做了一些预处理,但这是您编写的条目。
最普通的c++程序是这样的:int main() { return 0; }
如果出现相同的错误,则很可能您混淆了32位和64位,在这种情况下,"入口"点也可能出现此类问题。
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用