Est-il possible d'appeler du code C++, éventuellement compilé sous forme de fichier de bibliothèque de code (.dll), à partir d'un langage .NET tel que C# ?
Plus précisément, du code C++ tel que la bibliothèque de mise en réseau RakNet.
Est-il possible d'appeler du code C++, éventuellement compilé sous forme de fichier de bibliothèque de code (.dll), à partir d'un langage .NET tel que C# ?
Plus précisément, du code C++ tel que la bibliothèque de mise en réseau RakNet.
Une façon simple de faire appel à C++ est de créer une assemblée wrapper dans C++/CLI. Dans C++/CLI, vous pouvez faire appel à du code non géré comme si vous écriviez du code natif, mais vous pouvez faire appel à du code C++/CLI depuis C# comme s'il était écrit en C#. Le langage a été conçu pour que l'interopérabilité avec les bibliothèques existantes soit sa "killer app".
Par exemple - compiler ceci avec le commutateur /clr
#include "NativeType.h"
public ref class ManagedType
{
NativeType* NativePtr;
public:
ManagedType() : NativePtr(new NativeType()) {}
~ManagedType() { delete NativePtr; }
void ManagedMethod()
{ NativePtr->NativeMethod(); }
};
Ensuite, en C#, ajoutez une référence à votre assemblage ManagedType, et utilisez-le comme suit :
ManagedType mt = new ManagedType();
mt.ManagedMethod();
Vérifiez cet article de blog pour un exemple plus expliqué.
P/Invoke est une technologie intéressante, qui fonctionne assez bien, à l'exception des problèmes de chargement du fichier DLL cible. Nous avons constaté que la meilleure façon de procéder est de créer une bibliothèque statique de fonctions natives et de la lier à un projet Managed C++ (ou C++/CLI) qui en dépend.
Je ne connais pas la bibliothèque que vous avez mentionnée, mais en général, il y a plusieurs façons de procéder :
Oui, il s'appelle P/Invocation .
Voici un excellent site de ressources pour l'utiliser avec l'API Win32 :
C'est sûr. Cet article est un bon exemple de ce que vous pouvez faire pour commencer.
Nous faisons cela à partir de C# sur nos appareils Windows Mobile en utilisant P/Invocation .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.