fage
-
Moin ich habe ein kleines Problem,
bekomme diese Fehler, kann damit aber nicts anfangen.1>main2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: double __thiscall xml_configuration::get_double(char const *,double,bool )const " (?get_double@xml_configuration@@QBENPBDNPA_N@Z)" in Funktion ""float __cdecl hillc(double,double,double,double (__cdecl)(double *,double),double * const,double * const,double,double,double)" (?hillc@@YAMNNNP6ANPANN@ZQAN2NNN@Z)".
was bedeutet dieser Fehler ?

lg
-
Das ist ein Linker-Fehler. Irgendwo möchtest Du eine Funktion benutzen, die nur deklariert wurde. Die Funktionsdefinition ist entweder nicht vorhanden, oder Du hast sie in einer Übersetzungseinheit und vergessen, diese beim "Linken" zu berücksichtigen.
Beispiel:
// main.cpp #include <iostream> extern const char message[]; // Deklaration, keine Definition int main() { std::cout << message << '\n'; }Aus dieser einen Übersetzungseinheit kann man keine ausführbare Datei erzeugen. Es lässt sich kompilieren (zu einer Objekt-Datei) aber das war's auch schon. Der Linker, der Objekt-Dateien zusammenfasst, um daraus ein ausführbares Programm zu machen, wird sich über die fehlende Definition von
messagebeschweren.kruka@cambria:~/ccpp/test$ g++ -o programm main.cpp /tmp/ccPDuM4D.o: In function `main': main.cpp:(.text+0xd): undefined reference to `message' collect2: ld returned 1 exit statusMit einer zweiten Übersetzungseinheit, die eine Definition von
messageenthält...// foo.cpp extern const char message[] = "Hello World!";klappt das "Linken" auch:
kruka@cambria:~/ccpp/test$ g++ -c main.cpp kruka@cambria:~/ccpp/test$ g++ -c foo.cpp kruka@cambria:~/ccpp/test$ ls foo.cpp foo.o main.cpp main.o kruka@cambria:~/ccpp/test$ g++ -o programm main.o foo.o kruka@cambria:~/ccpp/test$ ls foo.cpp foo.o main.cpp main.o programm kruka@cambria:~/ccpp/test$ ./programm Hello World!kk
-
Nutzt du vielleicht irgendeine externe Bibliothek? Du hast dann wohl nur die Header-Datei inkludiert aber vergessen die entsprechende .lib statisch oder .dll dynamisch dazu zu linken.
Daher wohl der Fehler.
Lg freeG
-
ein beliebter fehler ist auch, wenn man bei der definition das
klassenname::vergessen hat - sieht aber eher nach ner lib als nach selbstgeschriebenem code aus -> siehe fr33gs antwort
-
Wer ist eigentlich fage?
-
übrigens schrieb:
Wer ist eigentlich fage?
Das ist der Schutzpatron der schlechten Threadtitel. Der steht all jenen bei, die bereits beim Formulieren ihres Anliegens versagen.