Dosyalarımın bağlanmasıyla ilgili bir sorun yaşıyorum.Linker hatası: "linker kullanılmadığı için kullanılmayan bağlantı dosyası", tanımlanmamış başvuru bu dosyada bir işlev
- ana programda,
gen1
: Temelde, benim program oluşur. gen1
-, çıkışlarstr2value
sonuçları giriş işlemestr2value
gönderir alır "dizgeciklerini" kullanarak jeton girdi keser işlem sıralama her belirtece ne belirler vestr2num
veyastr2cmd
onları rahatsız geçer. Daha sonra sonuçların bir dizisini döndürür.str2num
- aynenauthor.py
- - bir başlıkcmdTable.h
gelenstr2cmd.c
vestr2cmd.h
üreten bir Python komut bazı işlemestr2cmd
yapar.
Eminim, içerdiğim doğru bilgiler var, birkaç kez kontrol ettim. Ayrıca üstbilgilerde #ifndef
numaralı koşulun hatalı olduğunu kontrol ettim. İşte
#CPP = g++ -lserial
CPP = g++ -DTESTMODE
C= gcc
DEFINES = LURC
CFLAGS = -Wall -fshort-enums -D$(DEFINES)
PROJECTFILES = gen1.cpp str2value.o
STR2VALUEFILES = str2value.cpp str2cmd.o str2num.o tokenizer.o str2value.h
gen1 : $(PROJECTFILES)
$(CPP) $(CFLAGS) -o gen1 $(PROJECTFILES)
str2value.o : $(STR2VALUEFILES)
# echo "str2value"
$(CPP) $(CFLAGS) -c $(STR2VALUEFILES)
str2num.o: str2num.cpp str2value.h str2num.hpp
$(C) $(CFLAGS) -c $^
tokenizer.o: tokenizer.cpp tokenizer.hpp
$(CPP) $(CFLAGS) -c $^
str2cmd.o : authorCMDs.py cmdTable.h
python authorCMDs.py cmdTable.h str2cmd #this uses the gcc -E cmdTable.h -DLURC
$(C) $(CFLAGS) -c str2cmd.c str2cmd.h
#TODO: add a thing that checks str2cmd.h/.c has not been modified by hand
.PHONEY: clean
clean:
rm *.o
.PHONEY: all
all:
clear
make clean
make
olduğunu ben marka tüm alma çıkışı: Bu konuda ne olduğu konusunda
make clean
make[1]: Entering directory `/home/frames/LURC/gen1/gen1Source'
rm *.o
make[1]: Leaving directory `/home/frames/LURC/gen1/gen1Source'
make
make[1]: Entering directory `/home/frames/LURC/gen1/gen1Source'
python authorCMDs.py cmdTable.h str2cmd #this uses the gcc -E cmdTable.h -DLURC
str2cmd.c and str2cmd.h, generated from cmdTable.h
gcc -Wall -fshort-enums -DLURC -c str2cmd.c str2cmd.h
gcc -Wall -fshort-enums -DLURC -c str2num.cpp str2value.h str2num.hpp
g++ -DTESTMODE -Wall -fshort-enums -DLURC -c tokenizer.cpp tokenizer.hpp
g++ -DTESTMODE -Wall -fshort-enums -DLURC -c str2value.cpp str2cmd.o str2num.o tokenizer.o str2value.h
g++: str2cmd.o: linker input file unused because linking not done
g++: str2num.o: linker input file unused because linking not done
g++: tokenizer.o: linker input file unused because linking not done
g++ -DTESTMODE -Wall -fshort-enums -DLURC -o gen1 gen1.cpp str2value.o
str2value.o: In function `getValue(char*)':
str2value.cpp:(.text+0xbd): undefined reference to `str2cmd(char*)'
str2value.cpp:(.text+0x102): undefined reference to `str2num(char*)'
str2value.o: In function `getAllValues(char*)':
str2value.cpp:(.text+0x164): undefined reference to `tokenizer::tokenizer(char*)'
str2value.cpp:(.text+0x177): undefined reference to `tokenizer::getNumTokens(char const*)'
str2value.cpp:(.text+0x1a9): undefined reference to `tokenizer::getNextToken(char const*)'
str2value.cpp:(.text+0x1e9): undefined reference to `tokenizer::getNumTokens(char const*)'
str2value.cpp:(.text+0x201): undefined reference to `tokenizer::~tokenizer()'
str2value.cpp:(.text+0x25b): undefined reference to `tokenizer::~tokenizer()'
collect2: ld returned 1 exit status
make[1]: *** [gen1] Error 1
make[1]: Leaving directory `/home/frames/LURC/gen1/gen1Source'
make: *** [all] Error 2
herhangi bir öneriniz? STR2VALUESFILES
, eksik işlevleri tanımlamak için gereken tüm nesne dosyalarını içerir.
Başka nesne dosyalarından nasıl bir nesne dosyası oluşturabilirim o zaman? gen1, str2num str2cmd veya tokenizer –
ile doğrudan dependansa sahip değildir. Her bir .cpp' dosyasını ayrı ayrı derlersiniz ve daha sonra ortaya çıkan tüm '.o' dosyalarını birlikte bağlarsınız. Basit bir 'make' örneği ekledim. –
Unutmayın - bağımlılıkları başlık dosyaları yoluyla değil, bağımlı dosyaları yönetin. –