unaufgelöste externe Symbole und sowas...
-
Hi, ich bin relativ neu in C++
ich habe oft das problem das ich nicht aufgelöste externe Symbole habe (error LNK2001)
oder *```cpp
blablabla.obj : error LNK2005: "blablabla bereits in Main.obj definiertmich davon abhält weiter zu lernen...:( Jetzt würde ich gerne mal wissen warum das so ist und was ich dagegen tun kann. Was ist in den "obj" datein, wie kann man sie editiern oder zumindest rgendwie diesen LNK2005 Fehler weg bekommen ? :confused: hatte schon die forensuche benutzt aber nichts was mir geholfen hätte gefunden, und auch die sachen in der Hilfe Funktion von VS (MSDN glaub ich) habne mir nicht geholfen. Danke im voraus :+1:
-
Jetzt will ich's wissen schrieb:
Was ist in den "obj" datein, wie kann man sie editiern oder zumindest rgendwie diesen LNK2005 Fehler weg bekommen ?

obj-Dateien sind die Dateien, die der Compiler erzeugt. Aus jeder Übersetzungseinheit, d.h. jeder Quelldatei inklusiver aller inkludierter Header, wird eine Objektdatei. Der Linker fügt danach alle Objektdateien und eingebundenen Bibliotheken zu einer ausführbaren Datei zusammen und löst dabei externe Verweise (hauptsächlich globale Variablen und Funktionen) auf.
"blablabla.obj : error LNK2005: "blablabla bereits in Main.obj definiert" bedeutet, dass das Symbol blablabla sowohl in Main.obj als auch in blablabla.obj definiert wurde. Das kann entweder sein, weil du versehentlich 2 gleichnamige Funktionen oder Variablen hast. Oder ganz einfach weil du eine Definition in einer Headerdatei hast, die in blablabla.cpp und Main.cpp eingebunden ist. Definitionen gehören nicht in Header.
-
Und LNK2001 ist der umgekehrte Fall - das "Objekt" ist in gar keiner deiner .obj Dateien definiert. (das passiert, wenn du zwar einen Funktionsprototypen hast, aber die Quelldatei mit der Funktionsdefinition nicht compiliert hast)