有人可以帮助我解决下面的代码清单中出现的错误吗?
错误很可能与构造函数/析构函数有关:
/ usr / bin / ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o:在 函数`_start':
(。text + 0x20):未定义对“ main”的引用
collect2:错误:ld返回1个退出状态
代码清单:
// counter_id.cpp
// Obco class member-function definitions.
#include <iostream>
#include "counter_id.h" // include counter class definition
using namespace std;
// constructor sets object's ID number and descriptive message
Obco::Obco( int ID, string messageString )
: objectID( ID ), message( messageString )
{
cout << "Object " << objectID << "constructor runs"
<< message << endl;
} // end CreateAndDestroy constructor
// destructor
Obco::~Obco()
{
// output newline for certain objects; helps readability
cout << ( objectID == 1 || objectID == 6 ? "\n" : "" );
cout << "Object " << objectID << " destructor runs "
<< message << endl;
} // end ~Obco destructor
答案 0 :(得分:3)
您不仅要单独编译(-c),还试图建立完整链接,但是链接器未找到任何main
函数。
要获得完整的链接,您需要在g++
调用中包括所有源文件或目标文件(尤其是带有main
函数的文件)。
要仅单独编译一个文件(以供以后链接),则需要添加-c
选项。