Sdílet prostřednictvím


#using – direktiva (C++)

Importuje metadata do programu kompilovaného s /CLR.

#using file [as_friend]

Parametry

  • file
    Knihovna DLL, .exe, .netmodule, nebo .obj jazyka MSIL.Příklad:

    #using <MyComponent.dll>

  • as_friend
    Určuje, že jsou všechny typy v file k dispozici. Další informace naleznete v tématu Sestavení přítele (C++).

Poznámky

file může být soubor jazyka MSIL (Microsoft Intermediate Language), který je importován pro své spravované konstrukce a spravovaná data.Pokud soubor DLL obsahuje manifest sestavení, potom jsou importovány všechny odkazované knihovny DLL a sestavované sestavení začlení soubor v metadatech jako odkaz na sestavení.

Pokud file neobsahuje sestavení (pokud je file modul) a pokud není nutné použít informace o typu z modulu v aktuální aplikaci (sestavení), je možné označit, že modul je součástí sestavení, použitím /ASSEMBLYMODULE.Typy z modulu pak budou k dispozici pro všechny aplikace, které odkazují na sestavení.

Alternativou k použití #using je možnost kompilátoru /FU.

Sestavení .exe předána pomocí #using mohou být zkompilována s /clr:safe nebo /clr:pure, nebo s některým z dalších kompilátorů aplikace Visual Studio (například Visual Basic nebo Visual C#). Při pokusu o import metadat ze sestavení .exe kompilovaného s /clr, způsobí výjimku načítání souboru.

[!POZNÁMKA]

Komponentu, která je odkazována pomocí #using, lze spustit s jinou verzí souboru v době kompilace, což způsobí, že klientská aplikace poskytne neočekávané výsledky.

Je-li nutné, aby kompilátor rozpoznával typ v sestavení (ne modul), je zapotřebí jej donutit k přeložení typu, což lze provést, například, definováním instance daného typu.Existují jiné způsoby přeložení názvů typů pro kompilátor v sestavení, například pokud je zděděno z typu v sestavení, název typu se stane pro kompilátor známým.

Při importu metadat ze zdrojové kódu, který používá __declspec(thread), není sémantika vláken přítomna v metadatech.Například proměnná deklarována s __declspec(thread), zkompilovaná v programu, který je sestaven pro Common Language Runtime rozhraní .NET Framework, a poté importována pomocí #using, již nebude mít sémantiku __declspec(thread) v proměnné.

Všechny importované typy (spravované a nativní) v souboru, který je odkazován pomocí #using, jsou k dispozici, ale kompilátor zpracovává nativní typy jako deklarace, ne definice.

mscorlib.dll je automaticky odkazováno při kompilaci s /clr.

Proměnná prostředí LIBPATH určuje adresáře, které budou prohledány, jakmile se kompilátor pokusí přeložit názvy souborů předaných pomocí #using.

Kompilátor bude hledat odkazy v následující cestě:

  • Cesta zadaná v příkazu #using.

  • Aktuální adresář.

  • Systémový adresář rozhraní .NET Framework.

  • Adresáře přidané pomocí možnosti kompilátoru /AI.

  • Adresářů dle proměnné prostředí LIBPATH.

Příklad

Při vytvoření sestavení (C) a odkázání na sestavení (B), které odkazuje na jiné sestavení (A), nebude explicitně odkazováno na sestavení A, nebude-li explicitně použit jeden z typů sestavení A v sestavení C.

// using_assembly_A.cpp
// compile with: /clr /LD
public ref class A {};

// using_assembly_B.cpp
// compile with: /clr /LD
#using "using_assembly_A.dll"
public ref class B {
public:
   void Test(A a) {}
   void Test() {}
};

V následující ukázce se nevyskytuje žádná chyba kompilátoru pro neodkazování na using_assembly_A.dll, protože program nepoužívá žádné typy definované v using_assembly_A.cpp.

// using_assembly_C.cpp
// compile with: /clr
#using "using_assembly_B.dll"
int main() {
   B b;
   b.Test();
}

Viz také

Referenční dokumentace

Preprocesor – direktivy