Funktion aus ext. object-Datei wird nicht erkannt
-
Moin,
Ich habe in utils.cc eine funktion getNormalWert(..), ferner zwei Programme a.cc und b.cc, die beide getNormalWert(..) aufrufen.
Programm a läst sich "maken", während make b diesen Fehler meldet.b.o(.text+0x9015): undefined reference to `getNormalWert(basic_string<char, string_char_traits<char>,...., int)'
Die HeaderDatei utils.h ist bei beiden eingebunden.
Kopiere ich getNormalWert() in den source von b.cc, dann geht logischerweise.
Ich finde keine Lösung, warum es nciht klappt???
-
Stimmt dein Linkeraufruf? Poste mal dein Makefile...
-
du musst du Objekt Dateien schon linken
http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Link-Options.html#Link%20Options
-
Zwischendank: antowrte erst so spät, weil ich kurz mal 250 Km hinter mich bringen musste.
Makefile für Program a ( das fuunktioniert ):einzelbefund: einzelbefund.o dbase.o mystrings.o labor_utils.o einzelbefund.mak g++ einzelbefund.o dbase.o mystrings.o labor_utils.o -oeinzelbefund mystrings.o: mystrings.cc mystrings.hh g++ -c -Wall mystrings.cc labor_utils.o: labor_utils.cc labor_utils.hh g++ -c -Wall labor_utils.cc dbase.o: dbase.cc dbase.hh g++ -c -Wall dbase.cc einzelbefund.o: dbase.hh einzelbefund.cc g++ -c -Wall einzelbefund.cc
Makefile für Programm b ( findet Funktionen in labor_utils nicht)
laboranfrage: laboranfrage.o dbase.o mystrings.o laboranfrage.mak dbase.hh g++ laboranfrage.o dbase.o mystrings.o -olaboranfrage cp laboranfrage /home/www/labor/docs/cgi-bin/ chmod 755 /home/www/labor/docs/cgi-bin/laboranfrage mystrings.o: mystrings.cc mystrings.hh g++ -c -Wall mystrings.cc dbase.o: dbase.cc dbase.hh g++ -c -Wall dbase.cc laboranfrage.o: dbase.hh laboranfrage.cc g++ -c -Wall laboranfrage.cc
dannach sollte es doch klappen, was es auch getan hatte, als ich "getNormalWert" ( in labor_utils.cc ) noch nciht benutzt habe.
hier noich die labor_utils.hh, die in beiden ".cc" steht:
int isNormal ( string cGemessen,string cNormaltext ); int AlterInTagen ( string datum_Alt, string datum_Neu ) ; void writeLogFile(string cRemoteAdr,string cText); string getNormalWert (string cAssay, string blutDatum, string cSex, int blutTage) ;
Es werden "AlterInTagen(..)" und "getNortnalWert(..) bemängelt