簡體   English   中英

初學者Sublime和C ++鏈接器設置

[英]Beginner Sublime & C++ Linker Setup

我正在嘗試使用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;
}

#ifndef SCENEDATA_H
#define SCENEDATA_H

class SceneData{
int temp;

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

#endif // SCENEDATA_H

我正在使用提供的c ++構建配置的崇高精神。 已安裝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

使用Sublime作為文本編輯器,使用g ++編譯代碼沒有問題。 編譯時是否使用make文件? 如果是這樣,請發布您的make文件代碼。 沒有make文件,我只需要輸入:

g++ *.cpp

然后./a.out給了我預期的輸出'0'。

也許以下線程可能對您有幫助: 無法使用Sublime Text 2構建C ++程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM