Präprozessordefinition für Visual C++?
-
Was sind denn das für nicht aufgelöste externe Symbole?
Hast du schonmal nen Rebuild All gemacht?
-
dEUs schrieb:
Was sind denn das für nicht aufgelöste externe Symbole?
Das sind bei VC++ Funktionen, deren Köpfe in Headerdateien deklariert sind, aber deren vollständiger Inhalt in einer Codedatei oder Library steht, die anscheinend nicht mitgelinkt wurde.
dEUs schrieb:
Hast du schonmal nen Rebuild All gemacht?
Ja, hat absolut nichtsgebracht, leider.
-
hackbert schrieb:
dEUs schrieb:
Was sind denn das für nicht aufgelöste externe Symbole?
Das sind bei VC++ Funktionen, deren Köpfe in Headerdateien deklariert sind, aber deren vollständiger Inhalt in einer Codedatei oder Library steht, die anscheinend nicht mitgelinkt wurde.
Haha

Meinst du ich bin umsonst hier Mod? Natürlich weiss ich, was nicht aufgelöste externe Symbole sind. Ich wollte deine wissen!
-
Sorry, hab die Frage missverstanden. Das unaufgelöste externe Symbol ist eines aus dem ersten Projekt. Es handelt sich nicht um eine Bibliotheksfunktion, wenn Du darauf hinaus möchtest. Ich habe die zugehörige Headerdatei eingebunden, ebenso habe ich die Codedatei zum Projekt hinzugefügt. Offensichtlich wird die aber nicht mitgelinkt und deshalb bekomme ich das unaufgelöste externe Symbol.
-
hackbert schrieb:
Da beide Projekte später sowohl von VC++ als auch von Dev-C++ compiliert werden muss es eine möglichkeit geben das Includen von stdafx.h von einer Präprozessordefinition abhängig zu machen
Das wurde von MFK ja bereits beantwortet (-> _MSC_VER). Da das offensichtlich nicht hilft, wie du geschrieben hast, solltest du dir Gedanken über einen anderen Lösungsansatz machen.
stdafx.h ist glaub ich ein Header, den VC++ bei MFC Projekten erstellt (kann mich da aber auch irren). Prüfe nochmal, ob du diese Datei wirklich brauchst. Noch ein Tipp, schalte im VC++ das Benutzen von vorkompilierten Headern aus.
-
hackbert schrieb:
Offensichtlich wird die aber nicht mitgelinkt und deshalb bekomme ich das unaufgelöste externe Symbol.
Oder die Deklaration der Methoden unterscheidet sich von der Definition - zB ein const vergessen?
-
Shade Of Mine schrieb:
Oder die Deklaration der Methoden unterscheidet sich von der Definition - zB ein const vergessen?
Definitiv nicht, kompiliert mit mingw ja perfekt!
groovemaster2002 schrieb:
Noch ein Tipp, schalte im VC++ das Benutzen von vorkompilierten Headern aus
Wie geht das denn? /Yu"stdafx.h" habe ich ja schonmal entfernt.
Und was bringen vorkompilierte Headerdateien eigentlich?
-
hackbert schrieb:
groovemaster2002 schrieb:
Noch ein Tipp, schalte im VC++ das Benutzen von vorkompilierten Headern aus
Wie geht das denn?
Das kann man in den Projekteinstellungen verändern. Welche VC++ Version benutzt du denn?
-
Visual C++ 6.0
-
Bei Version 6.0 kann ich dir leider nicht helfen, da ich es nicht mehr auf dem Rechner hab. Musst halt mal alles in den Projekteinstellungen durchschauen. Da gibts irgendwo die Einstellung für vorkompilierte Header.
-
Hallo,
vorkompilierte Header ausschalten:
Projekt-Einstellungen, Register C/C++, Kategorie "Vorkompilierte Header"-> nicht verwenden.
MfG
-
Das bewirkt das gleiche wie das Entfernen von /Yu"stdafx.h". Ich bekomme dann immernoch ein unaufgelöstes externes Symbol. Kann das vielleicht daran liegen, dass die zugehörige Codedatei nicht im selben Verzeichnis liegt?
-
Unaufgelöstes externe Symbole entstehen immer dann, wenn Funktionen deklariert, aber nicht definiert sind. Schau dir das unaufgelöste externe Symbol an, und prüfe ob es in einer eingebundenen Übersetzungseinheit definiert bzw. in einer mitgelinkten Lib vorhanden ist.
-
Alle Libs und auch die zugehörige Codedatei sind im Projekt eingebunden. Anscheinend werden diese aus irgendeinem Grund nicht mitgelinkt. Meine Frage war: kann VC++ nur Dateien mitlinken, die im selben Verzeichnis oder einem Unterverzeichnis des Projekts liegen? die entsprechende Codedatei liegt nämlich eine Verzeichnisebene höher...
-
Libs können auf unterschiedliche Weise ins Projekt eingebunden werden.
1. du fügst sie direkt zu den Projektdateien hinzu
2. du gibst sie bei den Projekteinstellungen an (irgendwo bei den Linker Einstellungen). Dann musst du allerdings in den Verzeichniseinstellungen (das sind allgemeine VC++ Einstellungen also nicht projektspezifisch) die zu durchsuchenden Pfade angeben.