Udostępnij za pośrednictwem


Porady: używanie typu natywnego w kompilacji /clr

Można zdefiniować typ natywny w kompilacji /clr i dowolne użycie tego typu natywnego z poziomu zestawu jest prawidłowe. Jednak typy natywne nie będą dostępne do użycia z metadanych, do których odwołuje się odwołanie.

Każdy zestaw musi zawierać definicję każdego typu natywnego, który będzie używany.

Aby uzyskać więcej informacji, zobacz /clr (kompilacja środowiska uruchomieniowego języka wspólnego).

Przykłady

Ten przykład tworzy składnik, który definiuje i używa typu natywnego.

// use_native_type_in_clr.cpp
// compile with: /clr /LD
public struct NativeClass {
   static int Test() { return 98; }
};

public ref struct ManagedClass {
   static int i = NativeClass::Test();
   void Test() {
      System::Console::WriteLine(i);
   }
};

W tym przykładzie zdefiniowano klienta, który używa składnika. Zwróć uwagę, że jest to błąd podczas uzyskiwania dostępu do typu natywnego, chyba że jest on zdefiniowany w pliku compiland.

// use_native_type_in_clr_2.cpp
// compile with: /clr
#using "use_native_type_in_clr.dll"
// Uncomment the following 3 lines to resolve.
// public struct NativeClass {
//    static int Test() { return 98; }
// };

int main() {
   ManagedClass x;
   x.Test();

   System::Console::WriteLine(NativeClass::Test());   // C2653
}

Zobacz też

Korzystanie z międzyoperacyjności języka C++ (niejawna funkcja PInvoke)