/MD, /MT, /LD (Laufzeitbibliothek verwenden)
Aktualisiert: November 2007
Mit dieser Option können Sie angeben, ob es sich bei einem Multithread-Modul um eine DLL handelt, und Sie können Veröffentlichungs- oder Debugversionen der Laufzeitbibliothek auswählen.
/MD[d]
/MT[d]
/LD[d]
Hinweise
Option |
Beschreibung |
---|---|
/MD |
Bewirkt, dass von der Anwendung die Multithread- und DLL-spezifische Version der Laufzeitbibliothek verwendet wird. Definiert _MT und _DLL und führt dazu, dass vom Compiler in der OBJ-Datei der Bibliotheksname MSVCRT.LIB abgelegt wird. Mit dieser Option kompilierte Anwendungen sind statisch mit MSVCRT.lib verknüpft. Diese Bibliothek stellt eine Codeschicht bereit, mit der der Linker externe Verweise auflösen kann. Der tatsächlich ausgeführte Code ist in der Datei MSVCR90.DLL, enthalten. Diese Datei muss zur Laufzeit für die mit MSVCRT.LIB verknüpften Anwendungen verfügbar sein. Wenn /MD mit der _STATIC_CPPLIB-Präprozessordefinition (/D_STATIC_CPPLIB) verwendet wird, stellt die Anwendung eine Verknüpfung mit der statischen Multithread-Standard-C++-Bibliothek (LIBCPMT.LIB) statt mit der dynamischen Version (MSVCPRT.LIB) her. Dabei wird aber über MSVCPRT.LIB weiterhin eine dynamische Verknüpfung mit der Haupt-CRT hergestellt. Beachten Sie, dass die Kombination aus der _STATIC_CPPLIB-Präprozessordefinition und der Compileroption /clr oder /clr:pure nicht unterstützt wird. Weitere Informationen über Einschränkungen der /clr-Option finden Sie unter Einschränkungen für "/clr". |
/MDd |
Definiert _DEBUG, _MT und _DLL und führt dazu, dass von der Anwendung die Multithread- und DLL-spezifische Debugversion der Laufzeitbibliothek verwendet wird Die Option veranlasst den Compiler auch, den Bibliotheksnamen MSVCRT.lib in die OBJ-Datei einzufügen. |
/MT |
Bewirkt, dass die Anwendung die statische Multithread-Version der Laufzeitbibliothek verwendet. Definiert _MT und bewirkt, dass vom Compiler in der OBJ-Datei der Bibliotheksname LIBCMT.LIB abgelegt wird, sodass diese Bibliothek vom Linker zum Auflösen externer Symbole verwendet wird. |
/MTd |
Definiert _DEBUG und _MT. Diese Option veranlasst den Compiler auch, den Bibliotheksnamen LIBCMTD.lib so in die OBJ-Datei einzufügen, dass der Linker LIBCMTD.lib zum Auflösen externer Symbole verwendet. |
/LD |
Erstellt eine DLL. Übergibt die Option /DLL an den Linker. Der Linker sucht nach einer DllMain-Funktion, die jedoch nicht unbedingt erforderlich ist. Wenn Sie keine DllMain-Funktion schreiben, fügt der Linker eine DllMain-Funktion ein, die TRUE zurückgibt. Bindet den DLL-Startcode. Erstellt eine Importbibliothek (.lib), wenn in der Befehlszeile keine Exportdatei (.exp) angegeben ist; Sie verknüpfen die Importbibliothek mit Anwendungen, die die DLL aufrufen. Durch diese Option wird /Fe (Name der EXE-Datei) als Benennung einer DLL anstelle einer EXE-Datei interpretiert. Der Standardprogrammname basename.exe wird durch basename.dll ersetzt. Impliziert /MT, wenn Sie /MD nicht explizit angeben. |
/LDd |
Erstellt eine Debug-DLL. Definiert _MT und _DEBUG. |
Weitere Informationen zu C-Laufzeitbibliotheken finden Sie unter C Run-Time Libraries. An dieser Stelle erfahren Sie auch, welche Bibliotheken beim Kompilieren mit /clr (Common Language Runtime-Kompilierung) verwendet werden.
Alle an einen bestimmten Aufruf des Linkers übergebenen Module müssen mit derselben Compileroption für die Laufzeitbibliothek kompiliert werden (/MD, /MT, /LD).
Weitere Informationen über die Verwendung der Debugversionen von Laufzeitbibliotheken finden Sie unter Run-Time Library Reference.
Auch im Knowledge Base-Artikel Q140584 wird beschrieben, wie die passende C-Laufzeitbibliothek auszuwählen ist.
Weitere Informationen zu DLLs finden Sie unter DLLs.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite Codegenerierung.
Ändern Sie die Eigenschaft Laufzeitbibliothek.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe RuntimeLibrary.