初学者崇高& C ++链接器设置

时间:2014-02-02 20:33:04

标签: c++ build sublimetext2

我正在尝试使用Sublime Text 2作为我的IDE。我正在设置一个项目,但很难理解如何正确链接文件。当我构建assn1.cpp时,我收到以下错误:

C:\Users\..\AppData\Local\Temp\ccEffTCN.o:assn1.cpp:(.text+0xdd): undefined reference to `SceneData::SceneData(int)'
collect2.exe: error: ld returned 1 exit status

这是我的主要cpp文件。为清楚起见,我删除了不会导致问题的代码。如果我注释掉实例化新的Scene Data对象的位置,我就不会遇到构建错误。

#include "SceneData.h"
using namespace std;

int main(int argc, char* argv[]){
SceneData sc = SceneData(1);

return 0;
}

供参考,这是我的SceneData的h和cpp文件。

// SceneData.cpp
#include "SceneData.h"

SceneData::SceneData(int x){
temp = x;
}

int SceneData::publicTemp(){
return 0;
}

#ifndef SCENEDATA_H
#define SCENEDATA_H

class SceneData{
int temp;

public:
SceneData(int x);
int publicTemp();
};

#endif // SCENEDATA_H

我正在使用sublime提供的c ++ build config。 mingw和g ++已安装。我将所有文件保存在正确的项目目录中。我的具体问题是,当我创建最终在可执行文件中的o文件时,我缺少什么来确保链接文件?

** 以下编辑 * ** * * **

这是我的make文件

OBJS = $(patsubst %.c,   %.o, $(wildcard *.c)) \
   $(patsubst %.cpp, %.o, $(wildcard *.cpp)) \
   $(patsubst %.cxx, %.o, $(wildcard *.cxx))

CFLAGS = -Wall
CXXFLAGS = -Wall

OPT = -O4

balls2.png:

%.png: %.ppm
convert $< $@

%.ppm: %.nff trace
./trace < $*.nff
mv trace.ppm $@

trace: $(OBJS)
$(CXX) $(OPT) -o $@ $(OBJS) $(LDFLAGS) $(LDLIBS)

%.o: %.c
$(CC) $(OPT) -c -o $@ $(CFLAGS) $<

%.o: %.cxx
$(CXX) $(OPT) -c -o $@ $(CXXFLAGS) $<

%.o: %.cxx
$(CXX) $(OPT) -c -o $@ $(CXXFLAGS) $<

clean:
rm -f *.o

clobber: clean
rm -f trace *.ppm *.png

assn1.o: assn1.cpp SceneData.h
SceneData.o: SceneData.cpp SceneData.h

1 个答案:

答案 0 :(得分:0)

使用Sublime作为我的文本编辑器,使用g ++编译代码没有问题。你在编译时使用的是make文件吗?如果是这样,请发布您的make文件代码。没有make文件,我只需输入:

g++ *.cpp

然后./a.out按预期给我输出'0'。

以下主题可能对您有所帮助:Can't build C++ program using Sublime Text 2