`未定义参考`main`用于氯化聚丙烯类无主()(`undefined reference to `

2019-09-01 05:12发布

我碰上了这个试图得到答案。 但好像海报有多个文件和他们没有得到联,因此错误。

但是,为什么用一个单一的文件,当我得到这个错误?

g++ myClass.cpp  
/usr/lib/gcc/i686-redhat-linux/4.6.3/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

为什么是main必要这里在编译时( 从那里它发现的主要在我的代码一提 )? main是执行代码的起点,但为什么编译想我需要一个main在这里。 我可以把它在其他一些文件中定义和使用gcc -o做一个可执行?

或者,也许我失去了一些东西在这会导致错误的代码别的吗?

#include<iostream>
class myClass
{

public:
myClass()
{
    std::cout<<"Constructor";
}

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

};

Answer 1:

main是没有必要编译源文件。 有必要的程序链接成可执行[1],因为该程序具有开始的地方。

你需要告诉编译器说:“这不是我的整个程序,只需编译,但不链接”,使用“-c”选项,这样

g++ -c myClass.cpp

这将产生一个myClass.o文件,然后可以在以后使用,例如,

g++ -o myprog myClass.o myOtherClass.o something_that_has_main.o -lsomelib

(显然,无论你在你的项目替代名称)

[1]假设你使用普通的链接器scrips附带的编译器。 有“绕太办法”,但我认为这是超出了这个答案。



Answer 2:

您正在试图编译可执行文件,所以main函数的预期。 您应该使用编译的目标文件-c标志:

g++ -c myClass.cpp

当你在的话,我建议增加警告标志-Wall -Wextra至少是。



Answer 3:

您正在构建您的源为应用程序。 添加-c选项生成唯一对象文件:

g++ -c myClass.cpp


Answer 4:

只有编译? 使用-c选项

g++ -c file.cpp

否则项目需要一个main



Answer 5:

您需要使用-c标志来编译,只告诉编译器生成的目标文件。 你告诉编译器生成一个可执行。



文章来源: `undefined reference to `main` in Cpp class without main()
标签: c++ g++