/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:noAssemblypak 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í by initialAppDomain 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 .

/clrznamená /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, /KEYCONTAINERa /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

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. Nastavte rozevírací seznam Konfigurace na Všechny konfigurace a nastavte rozevírací seznam Platforma na Všechny platformy.

  3. Vyberte stránku Vlastnosti>konfigurace C/C++>Obecné.

  4. 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 také

Parametry kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC