c ++ compile error体系结构x86_64的未定义符号

时间:2012-11-22 21:46:16

标签: c++

我写了一个名为UserScore的课程:

//header
using namespace std;
class UserScore{
public:
    UserScore(const int &user_id, const int &rating);

private:
    int _user_id;
    int _rating;
};


//cpp
#include "UserScore.h"
UserScore::UserScore (const int &user_id, const int &rating):
    _user_id(user_id),
    _rating(rating)
{

}

编译命令为:

g++ src/UserScore.cpp -o obj/UserScore.o

但为什么这个简单的东西不能编译?

错误是:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

1 个答案:

答案 0 :(得分:2)

如果要生成目标文件,则需要在编译行中包含-c选项,否则编译器会假定您正在尝试构建可执行文件,并且如果您没有main()则会抱怨方法(这里正在发生)。

要创建一个稍后将链接到其中包含“main()”方法的代码文件的目标文件,您需要使用

g++ -c src/UserScore.cpp -o obj/UserScore.o

我认为你正在努力做到这一点。

或者,您只需要在代码中添加一个main函数,然后就可以创建一个可执行文件。

//header
using namespace std;
class UserScore{
public:
    UserScore(const int &user_id, const int &rating);

private:
    int _user_id;
    int _rating;
};


//cpp
#include "UserScore.h"
UserScore::UserScore (const int &user_id, const int &rating):
_user_id(user_id),
_rating(rating)
{

}

int main()
{
    return 0;
}