Udostępnij za pośrednictwem


# za pomocą dyrektywy (C++)

Importuje metadanych do programu skompilowanego z /CLR.

#using file [as_friend]

Parametry

  • file
    Instrukcje MSIL .dll, .exe.netmodule, lub. celNa przykład,

    #using <MyComponent.dll>

  • as_friend
    Określa, że wszystkie rodzaje w file są dostępne.Aby uzyskać więcej informacji, zobacz Zespoły Friend (C++).

Uwagi

filemoże być Microsoft intermediate language (MSIL) plik importowania danych zarządzanych i konstrukcje zarządzanych.Jeśli plik .dll zawiera manifest zestawu, a następnie wszystkich bibliotek DLL, do którego odwołuje się manifest są importowane i wyświetli listę zgromadzenie buduje się pliku w metadanych jako odwołanie do zestawu.

Jeśli file nie zawiera zestawu (Jeśli file jest modułem) i jeśli nie zamierzasz użyć typu informacji z modułu w bieżącej aplikacji (montaż), masz możliwość tylko wskazujące, że moduł jest częścią zestawu; Użyj /ASSEMBLYMODULE.Typy w module będzie wówczas dostępne dla innych aplikacji, do którego odwołuje się zgromadzenie.

Zamiast używać #using jest /FU opcję kompilatora.

zespoły .exe przekazany do #using , powinny zostać opracowane z /clr:safe lub /clr:pure, lub dowolne inne kompilatory Visual Studio (Visual Basic lub Visual C#, na przykład).Próby zaimportowania metadanych z zestawu exe skompilowany z /clr spowoduje wyjątek ładowania pliku.

[!UWAGA]

Składnik, do którego odwołuje się z #using mogą być uruchamiane za pomocą innej wersji pliku przywożone w czasie kompilacji, powodując aplikacji klienta dać nieoczekiwane wyniki.

Aby kompilator rozpoznawał typu w zestawie (nie moduł) musi być zmuszona do rozwiązania typu, co można zrobić, na przykład przez określenie wystąpienia tego typu.Istnieją inne sposoby rozpoznawania nazw typu w zestawie dla kompilatora, na przykład, jeśli dziedziczą z typu w zestawie, wpisz nazwę następnie będzie stają się znane w kompilatorze.

Podczas importowania metadanych zbudowany z kodu źródłowego, która używana __declspec(thread), semantyki wątek nie są zachowywane w metadanych.Na przykład Zmienna zadeklarowana z __declspec(thread), skompilowany w programie, który jest kompilacją dla.NET Framework aparatu plików wykonywalnych języka wspólnego, a następnie importować za pomocą #using, nie będzie już mieć __declspec(thread) semantykę zmiennych.

Importowane wszystkie typy (zarządzane i macierzystym) w pliku, do którego odwołuje się przez #using są dostępne, ale kompilator traktuje typów macierzystego jako deklaracje nie definicje.

mscorlib.dll automatycznie odwołuje się podczas kompilowania z /clr.

Zmienna środowiskowa LIBPATH Określa katalogi, które będą przeszukiwane, gdy kompilator próbuje rozpoznać nazwy plików są przekazywane do #using.

Kompilator będzie szukał odniesienia w następującej ścieżce:

  • Ścieżka określona w #using instrukcji.

  • Bieżący katalog.

  • .NET Framework w katalogu systemowym.

  • Katalogi, dodaje się /AI opcję kompilatora.

  • Katalogów w zmiennej środowiskowej LIBPATH.

Przykład

Jeśli Konstruuj zespół (C) i odwołać zestawu (B), że sama odwołuje się do innego zestawu (A), nie będzie mieć jawnego odniesienia a zestawu, chyba że jeden a jawnie używać typów w 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() {}
};

W następującym przykładzie nie istnieje żaden błąd kompilatora odwołania nie using_assembly_A.dll, ponieważ program nie używać żadnego z typów określonych w using_assembly_A.cpp.

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

Zobacz też

Informacje

Dyrektywy preprocesora