[gelöst] %(PreprocessorDefinitions)
-
Hallo miteinander,
kurze Erklärung: ich arbeite mit VC++ 2010. Dort gibt es bei den Projekteigenschaften so seltsame Variablen wie z.B. %(PreprocessorDefinitions) und auch noch ein paar andere die mit % beginnen.Mich würde interessieren was da drin steht, also welche Präprozessor-Symbole noch definiert werden, außer denen, die ich bzw. der Projekt-Wizzard definiert haben unter Konfigurationseigenschaften -> C/C++ -> Präprozessor -> Präprozessordefinitionen.
Weiß jemand was in %(PreprocessorDefinitions) drin steht bzw. wie man generell an den Inhalt solcher Variablen ran kommt?
Längere Erklärung: Ich möchte dem Kunden einfach nur eine .exe ausliefern, die ohne Weiteres gestartet werden kann. Dazu muss ich wohl verhindern, im selben Verzeichnis meiner erstellten .exe noch die DLLs wie z.B. "msvcp100.dll" und "msvcr100.dll" liegen müssen. Ich möchte nicht, dass der Kunde erst einen Installer starten muss, oder meine .exe zusammen mit den DLLs aus einer Zip-Datei entpacken muss oder dass der Kunde das Redistributable Package installieren muss.
Ich habe herausgefunden, dass ich die Bibliotheken statisch anstatt dynamisch linken muss, d.h. ich muss unter Konfigurationseigenschaften -> Allgemein -> Verwendung von MFC MFC in einer statischen Bibliothek verwenden einstellen.Ich habe zu Beginn meines Projekts in den Konfigurationseigenschaften alle Variablen, die mit % anfangen rausgeschmissen, damit ich die Übersicht behalten kann, was wie eingestellt ist und was verwendet wird und was nicht.
Sobald ich MFC in einer statischen Bibliothek verwenden bekam beim Erstellen des Projekts die Fehlermeldung error LNK2001: Nicht aufgelöstes externes Symbol "_wWinMain@16".
Die kam davor nicht, als noch Windows-Standardbibliotheken verwenden eingestellt war.
Ich habe nun herausgefunden, dass das Erstellen wieder funktioniert, wenn ich %(PreprocessorDefinitions) wieder hinzufüge.
Die erstellte .exe lässt sich nun auch ohne "msvcp100.dll" und "msvcr100.dll" ausführen.
Aber mich wurmt es eben sehr, dass ich nicht weiß was genau da los ist. In %(PreprocessorDefinitions) muss irgend ein Symbol definiert sein, die die Sache zum laufen bringt.
Nur was?
Und was steht sonst noch da drin?
Und was steht in den anderen Variablen drin, die mit % anfangen (z.B. %(AdditionalDependencies) oder so ähnlich?Weiß das jemand?
MfG
-
Es gibt Einstellungen im Properties, die über diese Variablen geerbt werden.
Insbesondere sind dies die Einstellungen, die sich aus der "General" Seite ergeben. Unicode/MBCS etc.Lass Dir einen Buildlog anzeigen und DU kannst das sehen...
In Deinem Fall wird vermutlich Dein Unicode Projekt zu einem MBCS Projekt.
-
Vielen Dank!
Ich habe in der Datei "cl.command.1.tlog" nachgeschaut. Das was da drin steht kam mir sehr bekannt vor. Es ist nämlich das selbe wie unter Konfigurationseigenschaften -> C/C++ -> Befehlszeile.
Und wenn ich %(PreprocessorDefinitions) entferne, dann fehlt da folgendes: /D "UNICODE" /D "_UNICODE".
Demnach sind es die Präprozessor-Symbole UNICODE únd _UNICODE.
Ich habs auch schon getestet. Wenn ich diese beiden Symbole selber definiere, dann funktioniert das Erstellen meines Projekts (jetzt kann ich also wieder ohne %(PreprocessorDefinitions) mein Projekt erstellen). Es müssen aber beide Symbole definiert werden. Wenn eins davon fehlt, hab ich wieder den Fehler.
Jedenfalls weiß ich jetzt was da definiert wird und weiß wie man das einsehen kann.
Danke nochmals!
MfG
-
Lass dieses Makro nicht weg, sonst kann man andere Einstellungen von der ersten Seite (General) der Projekte nicht einstellen.
-
Na gut, ok.
Jetzt weiß ich ja wie ich herausfinden kann was dieses Makro alles einstellt.