🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #453

Re: Problem mit Templates und g++

#453
From: Olaf Pfohl
Date: Thu, 21 Sep 1995 13:01
51 lines
2456 bytes
Ullrich von Bassewitz (uz@wuschel.ibb.schwaben.com) wrote:
: Benjamin Baermann (benni@kiffer.rbi.informatik.uni-frankfurt.de) wrote:
: > Das Problem tritt auf bei der Verwendung eines Listentemplates, dass mit
: > dem CC eigentlich ganz gut funktioniert. Der Compiler selbst gibt keine
: > Fehlermeldungen aus. Die kommen nur vom Linker und sehen so aus:
: >
: > /bin/ld: Unsatisfied symbols:
: > 	write__t5liste1ZiPi (code)
: > 	_$_t5liste1Zi (code)
: > 	reset__t5liste1Zi (code)
: > 	__t5liste1Zi (code)
: > collect2: ld returned 1 exit status

: Abhelfen kann man, indem man Kommandozeilen-Parameter verwendet (z.B.
: -f-no-external-templates) oder #pragmas, die dem Compiler sagen, wo er die
: templates instantiieren soll.

Tja, die "ubliche Template-Nerverei vom g++ ...

zun"achst steht eigentlich alles in den GCC/G++ info-Seiten, aber trotzdem
kurz die g"angigen Instanziierungs-Varianten:

- alle Template-Headerdateien werden mit `#pragma interface' ausgestattet
  und in genau einer .C-Datei ist ein `#pragma implementation <Headerfile>'
  anzugeben. Ausserdem muss diese .C-Datei mit `-fno-external-templates'
  compiliert werden.

- Benutzung von `-fno-implicit-templates'. Dann werden die `#pragma's
  ignoriert; man muss seine Template-Klassen explizit in einem .C-File
  deklarieren (man muss also genau wissen, welche Template-Klassen man 
  benutzt).

Bei grossen Projekten ist's in der Tat am einfachsten, wenn man ein
separates File f"ur die Instanziierungen benutzt. Nicht gerade sch"on...

Deine Linker-Fehlermeldungen lassen auf fehlende Instanziierung von
`liste<int>' schliessen.

Immer wieder hilfreich ist das Progr"ammchen `c++filt', welches zum
gcc/g++ Paket geh"ort und mit dem man das name mangeling r"uckg"angig
machen kann:

$ c++filt write__t5liste1ZiPi
liste<int>::write(int *)


hope that helps,
Olaf

--
(signature intentionally left blank)
Technical Details
Message-ID: <DF9Av2.2rp@ips.cs.tu-bs.de>
Path: arc1-ca.pugleaf.net!news.dkrz.de!tubsibr!infbssys!pfohl
References: <43hcpt$30c@zeus.rbi.informatik.uni-frankfurt.de> <DF2FMJ.2oL@wuschel.ibb.schwaben.com>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++
Path: arc1-ca.pugleaf.net!news.dkrz.de!tubsibr!infbssys!pfohl
From: pfohl@ips.cs.tu-bs.de (Olaf Pfohl)
Subject: Re: Problem mit Templates und g++
Message-ID: <DF9Av2.2rp@ips.cs.tu-bs.de>
Sender: news@ips.cs.tu-bs.de (News Software)
Nntp-Posting-Host: infbsps7.ips.cs.tu-bs.de
Organization: Inst. f. Informatik, TU Braunschweig, FRG
X-Newsreader: TIN [version 1.2 PL2]
References: <43hcpt$30c@zeus.rbi.informatik.uni-frankfurt.de> <DF2FMJ.2oL@wuschel.ibb.schwaben.com>
Date: Thu, 21 Sep 1995 13:01:50 GMT