为什么链接器不识别此类构造函数?

时间:2012-09-14 06:10:40

标签: c++ stl

我在使用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.cpp使用了KarateMatch.cpp

编辑:

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

KarateMatch.h

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

using namespace std;

class KarateMatch{

    public:
        KarateMatch();
};

KarateMatch.cpp

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

using namespace std;

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

1 个答案:

答案 0 :(得分:0)

它在我的系统上正常运行g ++ - 4.3 .. 我认为这不是KarateMatch.h和KarateMatch.cpp文件的问题。

首先尝试编译Driver.cpp而不包含KarateMatch.h文件,也不创建其对象。