Condividi tramite


Procedura: utilizzare un tipo nativo in una compilazione /clr

È possibile definire un tipo nativo in una compilazione /clr. Qualsiasi utilizzo di tale tipo nativo dall'assembly risulterà valido. I tipi nativi non saranno tuttavia utilizzabili dai metadati a cui viene fatto riferimento.

Ciascun assembly deve contenere la definizione di ogni tipo nativo utilizzato.

Per ulteriori informazioni, vedere /clr (Common Language Runtime Compilation).

Esempio

In questo esempio viene creato un componente che definisce e utilizza un tipo nativo.

// 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 questo esempio viene definito un client che utilizza il componente. Si noti che l'accesso al tipo nativo costituisce un errore, a meno che non sia definito nel modulo.

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

Vedere anche

Riferimenti

Utilizzo delle funzionalità di interoperabilità C++ (PInvoke implicito)