Folgendes beim linken einer Anwendung, die eine Template Klasse Vector benutzt:
Als Lösung wurde mir vorgeschlagen, in der Vector.cxx einfach "template class Vector<BotData>;" sowie "template class Vector<int>;" hinzuzufügen, soweit auch gut das klappt.
Aber: ich hätte das gerne automatisch... ich hab eine Zeit lang cxx unter True64 Unix benutzt, da wurde ein Template Repository erstellt, und das ganze automatisch gemacht... laut Doku vom GCC passiert das auch mit g++ automatisch, jedenfalls mit "-frepo" - das hab ich dann auch probiert... und trotz allem bekomm ich noch immer den gleichen Output wie oben...
Also: Wie kriegt man diese verdammte automatische Template Instanziierung hin?
Ich häng da jetzt Stunden dran, aber weiter komm ich kein Stück, ausser das es halt so doch klappen müsste, tuts aber nicht...
Ein paar Ausschnitte aus der makefile:
Code:
[cedric@ganymed] ~/src/> make 19:43:17
Compiling BotServer...
BotServer.o(.text+0x578): In function `UpDate()':
: undefined reference to `Vector<BotData>::Vector()'
BotServer.o(.text+0x5c3): In function `UpDate()':
: undefined reference to `Vector<int>::Vector()'
BotServer.o(.text+0x7ab): In function `UpDate()':
: undefined reference to `Vector<BotData>::Insert(BotData)'
BotServer.o(.text+0x7f6): In function `UpDate()':
: undefined reference to `Vector<BotData>::Print() const'
*** Error code 1
Stop in /usr/home/cedric/src.
Exitcode 1
Als Lösung wurde mir vorgeschlagen, in der Vector.cxx einfach "template class Vector<BotData>;" sowie "template class Vector<int>;" hinzuzufügen, soweit auch gut das klappt.
Aber: ich hätte das gerne automatisch... ich hab eine Zeit lang cxx unter True64 Unix benutzt, da wurde ein Template Repository erstellt, und das ganze automatisch gemacht... laut Doku vom GCC passiert das auch mit g++ automatisch, jedenfalls mit "-frepo" - das hab ich dann auch probiert... und trotz allem bekomm ich noch immer den gleichen Output wie oben...
Also: Wie kriegt man diese verdammte automatische Template Instanziierung hin?
Ich häng da jetzt Stunden dran, aber weiter komm ich kein Stück, ausser das es halt so doch klappen müsste, tuts aber nicht...
Ein paar Ausschnitte aus der makefile:
Code:
CXX = g++ -pg -DFREEBSD -I$(VECTOR)
all: BotServer
BotServer: BotServer.cxx $(BOTDATA)/BotData.o $(VECTOR)/Vector.o
echo Compiling BotServer...
$(CXX) -c -frepo BotServer.cxx
$(CXX) -o BotServer BotServer.o $(BOTDATA)/BotData.o $(VECTOR)/Vector.o
$(VECTOR)/Vector.o: $(VECTOR)/Vector.cxx $(VECTOR)/Vector.h
echo Compiling Vector.o...
$(CXX) -c $(VECTOR)/Vector.cxx
mv Vector.o $(VECTOR)