ça n'a strictement rien à voir....
mrcyprom>> déjà, il faut coder en unsafe, car il va falloir faire usage de pointeurs. ensuite, il faut connaitre l'équivalent du type 'char' de C++ en C# : c'est le type 'sbyte'.
donc, en admettant que ta fonction C++ retourne un char*, tu peux la récupérer en C# comme ceci :
Code :
unsafe { sbyte* retbuffer = (sbyte*)Marshal.AllocHGlobal(256).ToPointer(); // on alloue un buffer de 256 octets sur le tas non managé. il faudra donc penser à le libérer retbuffer = MaFonctionCPlusPlus(); // appel de la fonction C++ qui renvoie un char*. on récupère ce pointeur dans le buffer alloué string str = new String(retbuffer ); // on construit une chaine C# à partir du buffer. Marshal.FreeHGlobal(retbuffer); // on a plus besoin du buffer, on peut donc le libérer }
|
c'est un code que j'ai pondu pour mon plugin winamp (qui possède un SDK en C, bonjour le marshalling), et qui fonctionne bien (tu peux essayer mon plugin pour t'en convaincre )
Message édité par Harkonnen le 10-11-2006 à 23:17:44
---------------
J'ai un string dans l'array (Paris Hilton)