1

我写了一个名为 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
4

1 回答 1

2

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

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

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

这就是我认为你正在尝试做的事情。

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

//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;
}
于 2012-11-22T22:14:22.140 回答