/clr
(Kompilace modulu CLR (Common Language Runtime)
Umožňuje aplikacím a komponentám používat funkce z modulu CLR (Common Language Runtime) a umožňuje kompilaci C++/CLI.
Syntaxe
/clr
[:
možnosti]
Argumenty
volby
Jeden nebo více následujících argumentů oddělených čárkami.
Žádná
Bez možností
/clr
vytvoří metadata pro komponentu. Metadata mohou využívat jiné aplikace CLR a umožňuje komponentě využívat typy a data v metadatech jiných komponent CLR. Další informace naleznete v tématu Smíšená (nativní a spravovaná) sestavení.
netcore
K dispozici od sady Visual Studio 2019 verze 16.4,
/clr:netcore
vytvoří metadata a kód pro komponentu pomocí nejnovější architektury .NET pro různé platformy, označované také jako .NET Core. Metadata mohou využívat jiné aplikace .NET Core. A tato možnost umožňuje komponentě využívat typy a data v metadatech jiných komponent .NET Core.
nostdlib
Dává kompilátoru pokyn, aby ignoroval výchozí
\clr
adresář. Kompilátor generuje chyby, pokud zahrnete více verzí knihovny DLL, například System.dll. Tato možnost umožňuje zadat konkrétní architekturu, která se má použít při kompilaci.pure
/clr:pure
je zastaralý. Tato možnost se odebere v sadě Visual Studio 2017 a novějších verzích. Doporučujeme portovat kód, který musí být čistý jazyk MSIL do jazyka C#.safe
/clr:safe
je zastaralý. Tato možnost se odebere v sadě Visual Studio 2017 a novějších verzích. Doporučujeme portovat kód, který musí být bezpečný pro jazyk MSIL do jazyka C#.noAssembly
/clr:noAssembly
je zastaralý. Místo toho použijte/LN
(vytvořit modul MSIL).Říká kompilátoru, aby do výstupního souboru nevkládal manifest sestavení. Ve výchozím nastavení
noAssembly
tato možnost není platná.Spravovaný program, který v manifestu nemá metadata sestavení, se označuje jako modul. Možnost
noAssembly
lze použít pouze k vytvoření modulu. Pokud kompilujete pomocí/c
a/clr:noAssembly
pak zadejte/NOASSEMBLY
možnost ve fázi linkeru pro vytvoření modulu.Před sadou Visual Studio 2005 je
/clr:noAssembly
požadováno/LD
./LD
je nyní implicitní, když zadáte/clr:noAssembly
.initialAppDomain
initialAppDomain
je zastaralý. Umožňuje aplikaci C++/CLI spustit ve verzi 1 modulu CLR. Aplikace kompilovaná pomocí byinitialAppDomain
neměla být používána aplikací, která používá ASP.NET, protože není podporovaná ve verzi 1 modulu CLR.
Poznámky
Spravovaný kód je kód , který může modul CLR zkontrolovat a spravovat. Spravovaný kód má přístup ke spravovaným objektům. Další informace naleznete v tématu /clr
Omezení.
Informace o tom, jak vyvíjet aplikace, které definují a využívají spravované typy v jazyce C++, naleznete v tématu Rozšíření komponent pro platformy runtime.
Aplikace kompilovaná pomocí /clr
může nebo nemusí obsahovat spravovaná data.
Pokud chcete povolit ladění ve spravované aplikaci, přečtěte si téma /ASSEMBLYDEBUG
(Přidání DebuggableAttribute).
Na haldě shromážděné paměti se vytvoří instance pouze typů CLR. Další informace naleznete v tématu Třídy a struktury. Ke kompilaci funkce do nativního kódu použijte direktivu unmanaged
pragma. Další informace naleznete v tématu managed
, unmanaged
.
Ve výchozím nastavení /clr
není platná. Pokud /clr
je v platnosti, /MD
je také v platnosti. Další informace naleznete v tématu /MD
, /MT
, /LD
(použití run-time library). /MD
zajišťuje, že dynamicky propojené multithreaded verze rutin modulu runtime jsou vybrány ze standardních hlaviček souborů. Multithreading je nutný pro spravované programování, protože systém uvolňování paměti CLR spouští finalizační metody v pomocném vlákně.
Pokud kompilujete pomocí /c
, můžete určit typ CLR výsledného výstupního souboru pomocí možnosti linkeru /CLRIMAGETYPE
.
/clr
znamená /EHa
, a nejsou podporovány /clr
žádné další /EH
možnosti . Další informace najdete v tématu /EH
(Model zpracování výjimek).
Informace o tom, jak určit typ image CLR souboru naleznete v tématu /CLRHEADER
.
Všechny moduly předané danému vyvolání linkeru musí být zkompilovány pomocí stejné možnosti kompilátoru knihovny runtime (/MD
nebo /LD
).
/ASSEMBLYRESOURCE
Pomocí možnosti linkeru vložte prostředek do sestavení. /DELAYSIGN
, /KEYCONTAINER
a /KEYFILE
možnosti linkeru také umožňují přizpůsobit způsob vytvoření sestavení.
Při /clr
použití _MANAGED
je symbol definován jako 1. Další informace najdete v předdefinovaných makrech.
Globální proměnné v nativním souboru objektu se inicializují jako první (při DllMain
spuštění spustitelného souboru DLL) a pak se inicializují globální proměnné ve spravované části (před spuštěním spravovaného kódu). #pragma init_seg
ovlivňuje pouze pořadí inicializace ve spravovaných a nespravovaných kategoriích.
Metadata a nepojmenované třídy
Nepojmenované třídy se zobrazují v metadatech pod názvy, jako $UnnamedClass$<crc-of-current-file-name>$<index>$
je například , kde <index>
je sekvenční počet nepojmenovaných tříd v kompilaci. Například následující ukázka kódu vygeneruje v metadatech nepojmenovanou třídu.
// clr_unnamed_class.cpp
// compile by using: /clr /LD
class {} x;
K zobrazení metadat použijte ildasm.exe.
Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Nastavte rozevírací seznam Konfigurace na Všechny konfigurace a nastavte rozevírací seznam Platforma na Všechny platformy.
Vyberte stránku Vlastnosti>konfigurace C/C++>Obecné.
Upravte vlastnost Podpory modulu CLR (Common Language Runtime). Kliknutím na OK uložte provedené změny.
Poznámka:
V integrovaném vývojovém prostředí sady Visual Studio lze možnost kompilátoru /clr
nastavit jednotlivě na stránce Vlastnosti>konfigurace C/C++>Obecné v dialogovém okně Stránky vlastností. K vytvoření projektu však doporučujeme použít šablonu CLR. Nastaví všechny vlastnosti potřebné k úspěšnému vytvoření komponenty CLR. Dalším způsobem nastavení těchto vlastností je použití vlastnosti Common Language Runtime Support na stránce Upřesnit vlastnosti>konfigurace dialogového okna Stránky vlastností. Tato vlastnost nastaví všechny ostatní možnosti nástroje související s CLR najednou.
Programové nastavení tohoto parametru kompilátoru
- Viz třída CompileAsManaged.
Viz také
Parametry kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC