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 depuis l'assembly sera valide. Toutefois, les types natifs ne seront pas utilisables depuis des 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 /clr (Compilation pour le Common Language Runtime).

Exemple

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. Remarquez qu'accéder au type natif constitue une erreur, à moins que cela ne soit défini dans le module (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
}

Voir aussi

Référence

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