1

KarateMatch new_match;使用以下命令编译Driver.cpp文件时,我在创建新对象时遇到此错误g++ 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.cppand KarateMatch.cpp

编辑:

我已经尝试过在我的系统(OS X 10.8.1)上完全显示的代码,但编译时没有出现相同的错误。

空手道比赛.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 文件的问题。

尝试先只编译 Driver.cpp 而不包括 KarateMatch.h 文件并且不创建其对象。

于 2012-09-14T06:34:29.153 回答