Freigeben über


Gewusst wie: Verwenden eines systemeigenen Typs in einer /clr-Kompilierung

Sie können einen nativen Typ in einer /clr-Kompilierung definieren, und jede Verwendung dieses nativen Typs innerhalb der Assembly ist gültig. Systemeigene Typen stehen jedoch nicht zur Verwendung aus referenzierten Metadaten zur Verfügung.

Jede Assembly muss die Definition jedes systemeigenen Typs enthalten, den sie verwenden wird.

Weitere Informationen finden Sie unter /clr (Common Language Runtime-Kompilierung).

Beispiele

In diesem Beispiel wird eine Komponente erstellt, die einen systemeigenen Typ definiert und verwendet.

// 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);
   }
};

In diesem Beispiel wird ein Client definiert, der die Komponente verwendet. Beachten Sie, dass es sich um einen Fehler handelt, um auf den nativen Typ zuzugreifen, es sei denn, sie ist im Kompiland definiert.

// 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
}

Siehe auch

Verwenden von C++-Interop (implizites PInvoke)