Rémi Thomas
Intégrez du code C++ natif dans vos applications .NET
Cet article s'adresse aux personnes qui connaissent C++ et .NET et a pour objectif de montrer comment appeler du code C++ natif depuis des applications .NET
Par Rémi Thomas publié le 12/01/2007 à 09:38, lu 8374 fois, 4 pages
 2 | Les différents modes disponibles en .NET
  • Mode Managed : c'est le mode par défaut, utilisé par l'ensemble des langages .NET. La mémoire et les pointeurs sont gérés par la CLR.
  • Mode Unmanaged : dans ce mode, la CLR gère la mémoire mais pas les pointeurs. Cela permet de gagner du temps car moins de contrôles sont effectués. Ce mode est disponible en C# avec le mot clé #pragma unmanaged.
  • Mode Natif (Native) : la CLR exécute directement l'assembleur et ne gère pas la mémoire.
Depuis l'apparition de Visual Studio 2005 :
  • Les pointeurs vers les objets .NET sont exprimés avec le ^ (circonflexe). Ex : System::String^ maChaine = gcnew System::String(« Hello ») maChaine est ici un pointeur vers l'objet string et donc s'utilise avec -> int length = maChaine->Length ;
  • gcnew = allouer un objet dans le tas managé .NET
  • Les tableaux ont comme syntax array<TYPE>^
C++ est le seul langage .NET qui permette de mixer les modes Natif et Managed. En utilisant C++, il est possible d'appeler du code natif depuis le monde managed et inversement. Le compilateur est capable de créer une assembly (une DLL) contenant à la fois du code assembleur et du code MSIL. Un wrapper est une classe intermédiaire qui fait la transition entre les mondes managed et natif. Par exemple : pour utiliser une bibliothèque native C++ en C#, il faut ajouter un wrapper en C++ managé qui exposera la classe native.
 
» Démarrer une discussion
 
Discussion démarée par lzw1015bean le 27/03/2008 à 23:55, 1 commentaire(s).
Discussion démarée par floflo8731 le 09/06/2008 à 14:49, 1 commentaire(s).