1

ファイルを次KarateMatch new_match;のようにコンパイルすると、新しいオブジェクトを作成するときにこのエラーが発生します。Driver.cppg++ Driver.cpp KarateMatch.cpp -o output

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

KarateMatch new_match;

#include <KarateMatch.h>との両方Driver.cppで使用しているため、何が間違っていたのかわかりませんKarateMatch.cpp

編集:

私のシステム (OS X 10.8.1) で正確に示されているようにコードを試しましたが、これは同じエラーでコンパイルされません。

KarateMatch.h

#include <iostream>
#include <string>
#include <vector>

using namespace std;

class KarateMatch{

    public:
        KarateMatch();
};

カラテマッチ.cpp

#include "KarateMatch.h"
#include <iostream>
#include <string>
#include <vector>

using namespace std;

KarateMatch::KarateMatch(){
    cout << "HI";
}
4

1 に答える 1

0

私のシステムg++-4.3で正常に動作しています。KarateMatch.hファイルとKarateMatch.cppファイルの問題ではないと思います。

KarateMatch.hファイルを含めず、オブジェクトを作成せずに、最初にDriver.cppのみをコンパイルしてみてください。

于 2012-09-14T06:34:29.153 に答える