Ich versuche, die Option „Laufzeitbibliothek“ von Microsoft Visual Studio C++ zu verstehen.
Laut /MD, /MT, /LD (Laufzeitbibliothek verwenden) [MS Learn ] gibt es 6 Optionen. Dabei handelt es sich im Wesentlichen um drei Optionen, die es in den Varianten Debug und Release gibt.
Wo stelle ich die Option /LD ein?
Auf der Website heißt es:
- Öffnen Sie das Dialogfeld „Eigenschaftenseiten“ des Projekts. Weitere Informationen finden Sie unter Festlegen von C++-Compiler- und Build-Eigenschaften in Visual Studio.
- Wählen Sie die Eigenschaftenseite „Konfigurationseigenschaften > C/C++ > Codegenerierung“ aus.
- Ändern Sie die Eigenschaft der Laufzeitbibliothek.
Zu diesem Zeitpunkt bietet mein Visual Studio nur /MD, /MT, /MDd an und /MTd. Es ist keine Option /LD oder /LDd verfügbar.
Aus dieser Anweisung bei /LD:
Impliziert /MT es sei denn, Sie geben ausdrücklich /MD an.
Ich komme zu dem Schluss, dass es sich hierbei um unterschiedliche Optionen handeln muss, sonst könnte ich /LD und /MD nicht gleichzeitig angeben .
Ich verwende Visual Studio 2022 Preview, Version 17.13.0 Vorschau 2.1. Mein Projekttyp ist eine „Dynamic-Link Library (DLL)“. Konfigurationseigenschaften / Allgemein / Konfigurationstyp lautet „Dynamische Bibliothek (.dll)“.
Dies sind alle Compiler-Befehlszeilenargumente, wenn ich /MT für die Debug-Konfiguration spezifiziere:
Code: Select all
/JMC /permissive- /Yu"pch.h" /ifcOutput "x64\Debug\" /GS /W3 /Zc:wchar_t
/ZI /Gm- /Od /sdl /Fd"x64\Debug\vc143.pdb" /Zc:inline /fp:precise
/D "_DEBUG" /D "DYNAMICLIBRARY_EXPORTS" /D "_WINDOWS" /D "_USRDLL" /D "_WINDLL"
/D "_UNICODE" /D "UNICODE"
/errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MT /FC /Fa"x64\Debug\" /EHsc
/nologo /Fo"x64\Debug\" /Fp"x64\Debug\DynamicLibrary.pch" /diagnostics:column
Warum? In diesem Beispiel [MSDN] heißt es, ich solle mit cl /EHsc /W4 /MD /LD test1Dll.cpp kompilieren. Ich weiß, ich könnte das entweder einfach in der Befehlszeile tun oder /LD in den zusätzlichen Befehlszeilenoptionen der Benutzeroberfläche hinzufügen. Aber ich möchte ein besseres Verständnis erlangen und nicht einfach blind irgendwelchen Anweisungen folgen.
Ich versuche, die Option „Laufzeitbibliothek“ von Microsoft Visual Studio C++ zu verstehen.
Laut /MD, /MT, /LD (Laufzeitbibliothek verwenden) [MS Learn ] gibt es 6 Optionen. Dabei handelt es sich im Wesentlichen um drei Optionen, die es in den Varianten Debug und Release gibt.
[b]Wo stelle ich die Option /LD ein?[/b]
Auf der Website heißt es:
[list]
[*]Öffnen Sie das Dialogfeld „Eigenschaftenseiten“ des Projekts. Weitere Informationen finden Sie unter Festlegen von C++-Compiler- und Build-Eigenschaften in Visual Studio.
[*]Wählen Sie die Eigenschaftenseite „Konfigurationseigenschaften > C/C++ > Codegenerierung“ aus.
[*] Ändern Sie die Eigenschaft der Laufzeitbibliothek.
[/list]
Zu diesem Zeitpunkt bietet mein Visual Studio nur /MD, /MT, /MDd an und /MTd. Es ist keine Option /LD oder /LDd verfügbar.
Aus dieser Anweisung bei /LD:
Impliziert /MT es sei denn, Sie geben ausdrücklich /MD an.
Ich komme zu dem Schluss, dass es sich hierbei um unterschiedliche Optionen handeln muss, sonst könnte ich /LD und /MD nicht gleichzeitig angeben .
Ich verwende Visual Studio 2022 Preview, Version 17.13.0 Vorschau 2.1. Mein Projekttyp ist eine „Dynamic-Link Library (DLL)“. Konfigurationseigenschaften / Allgemein / Konfigurationstyp lautet „Dynamische Bibliothek (.dll)“.
[img]https://i.sstatic.net/ 7AoSr2We.png[/img]
Dies sind alle Compiler-Befehlszeilenargumente, wenn ich /MT für die Debug-Konfiguration spezifiziere:
[code]/JMC /permissive- /Yu"pch.h" /ifcOutput "x64\Debug\" /GS /W3 /Zc:wchar_t
/ZI /Gm- /Od /sdl /Fd"x64\Debug\vc143.pdb" /Zc:inline /fp:precise
/D "_DEBUG" /D "DYNAMICLIBRARY_EXPORTS" /D "_WINDOWS" /D "_USRDLL" /D "_WINDLL"
/D "_UNICODE" /D "UNICODE"
/errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MT /FC /Fa"x64\Debug\" /EHsc
/nologo /Fo"x64\Debug\" /Fp"x64\Debug\DynamicLibrary.pch" /diagnostics:column
[/code]
Warum? In diesem Beispiel [MSDN] heißt es, ich solle mit cl /EHsc /W4 /MD /LD test1Dll.cpp kompilieren. Ich weiß, ich könnte das entweder einfach in der Befehlszeile tun oder /LD in den zusätzlichen Befehlszeilenoptionen der Benutzeroberfläche hinzufügen. Aber ich möchte ein besseres Verständnis erlangen und nicht einfach blind irgendwelchen Anweisungen folgen.