C++ 初学者升华&;C++;链接器设置

C++ 初学者升华&;C++;链接器设置,c++,build,sublimetext2,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文

我正在尝试使用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文件。为了清晰起见,我删除了没有引起问题的代码。如果在实例化新场景数据对象的位置注释掉,则不会出现构建错误

#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;
}

我使用的是提供C++的C++构建配置。安装了mingw和g++。我已将所有文件保存在正确的项目目录中。我的具体问题是,在创建最终位于可执行文件中的o文件时,我缺少什么来确保文件被链接

***编辑以下内容******

这是我的制作文件

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
OBJS=$(patsubst%.c、%.o、$(通配符*.c))\
$(patsubst%.cpp,%.o,$(通配符*.cpp))\
$(patsubst%.cxx,%.o,$(通配符*.cxx))
CFLAGS=-Wall
CXXFLAGS=-Wall
OPT=-O4
balls2.png:
%.png:%.ppm
转换成美元$@
%.ppm:%.nff跟踪
./trace<$*.nff
毫伏痕量百万分之一$@
跟踪:$(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)$<
清洁:
rm-f*.o
击打者:干净
rm-f跟踪*.ppm*.png
assn1.o:assn1.cpp SceneData.h
SceneData.o:SceneData.cpp SceneData.h

我使用g++编译代码时没有问题,使用Sublime作为我的文本编辑器。编译时是否使用make文件?如果是,请张贴您的make文件代码。没有make文件,我只需要输入:

g++ *.cpp
然后./a.out按预期为我提供了输出“0”


也许下面的帖子对您有所帮助:

我添加了我的make file sans comments。如果我只是从powershell运行make,它就可以正常工作。我在试图理解为什么它不能与Sublime一起工作。既然你让它工作了,我很好奇我是否设置了错误的东西。
g++ *.cpp