Automatic Template Instantiation

Cédric

aka decemplex
Folgendes beim linken einer Anwendung, die eine Template Klasse Vector benutzt:

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? :confused: ;'(

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)
 
Automatische Template Instanziierung gibt's für g++ noch nicht - könnten die mal schleunigst reinbauen :-( Meiner Meinung nach ein dickes Manko gegenüber andere Compiler...

Bevor hier noch jemand sucht ;)
 
Zurück
Oben