MSVC++: Linkerreihenfolge über Code regeln
-
Guten Abend, ist es in Microsoft Visual C++ Express möglich, im Code bestimmte Linkerabhängigkeiten festzulegen? Auf MSDN habe ich dazu nur
/ORDER
gefunden, das scheint nicht ganz das zu sein, was ich suche.Ich habe nämlich ein Modul, das unter anderem folgende Funktionen definiert:
void* operator new(size_t); void operator delete(void*);
Nun erhalte ich Konflikte mit den bereits vorhandenen Speicher-Operatoren in der CRT, wenn ich das über
#pragma comment
löse (selbst wenn das#pragma
ganz am Anfang vor allen Includes vorkommt). Der Linker sagt, er hätte mehrfache Definitionen gefunden; offensichtlich linkt er die CRT vor meinem Modul. Setze ich die Linker-Abhängigkeit hingegen in den Projekt-Eigenschaften, funktioniert alles wie gewünscht.Jetzt frage ich mich, ob ich das gleiche Verhalten auch durch
#pragma comment
oder sonstige Anweisungen direkt im C++-Code erreichen kann? Es wäre schon praktisch, dann könnte man ein automatisches Linken einrichten und müsste nicht in jedem Projekt zuerst die Eigenschaften modifizieren. Zumal es um ein Speicherkontrolltool geht, das nur zum Debugging - also für kurze Zeit - in vielen anderen Projekten benötigt wird.
-
Der #pragma comment setzt die LIB an das Ende der Kette der zu durchsuchenden Libs, wenn dieses Objekt Modul geladen wird.
Alle anderen Libs die auf der Befehlszeile angegeben werden stehen in der Liste davor.
Man kann dies IMHO nicht beeinflussen.
Allerdings wird die CRT ähnlich über solche comment Statements eingebunden. Das Problemist evtl. nur, das ein anderes Objekt Modul Deines Projektes evtl. die CRT Libs bereits in die Liste aufgenommen hat.
Wenn Du also als erstes Statement vor der ersten include Datei Dein #pragma setzt sollte es die selbe Wirkung haben.