Partager via


Comment : utiliser un type natif dans une compilation /clr

Vous pouvez définir un type natif dans une compilation /clr et toute utilisation de ce type natif à partir de l’assembly est valide. Toutefois, les types natifs ne seront pas disponibles pour une utilisation à partir de métadonnées référencées.

Chaque assembly doit contenir la définition de chaque type natif qu’il utilisera.

Pour plus d’informations, consultez l’article /clr (Compilation pour le Common Language Runtime).

Exemples

Cet exemple crée un composant qui définit et utilise un type natif.

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

Cet exemple définit un client qui consomme le composant. Notez qu’il s’agit d’une erreur d’accès au type natif, sauf si elle est définie dans la compilation.

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

Voir aussi

Utilisation de l’interopérabilité C++ (PInvoke implicite)