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

それがあなたがやろうとしていると私が思うことです。

または、コードに 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;
}
于 2012-11-22T22:14:22.140 に答える