我写了一个名为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
答案 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;
}