mercredi 1 octobre 2008

Pour info...

J'exportais le code de mon outil de Reverse Arp en librairie dynamique (DLL) pour pouvoir l'appeler depuis un programme écrit en C#... Et la ben pas si facile de passer un char * en écriture en fait!!!

Voici donc la solution :


Signature de la fonction exportée de la DLL (écrite en C) :

extern "C" __declspec(dllexport) int getIPfromMAC(char * MAC_TO_LOOK_FOR, char * IP_RANGE_START, char * IP_RANGE_END, char * ret)

Appel en C# :

[DllImport("RARPL_DLL.dll", EntryPoint = "getIPfromMAC")]
static extern int getIPfromMAC(string MAC_TO_LOOK_FOR, string IP_RANGE_START, string IP_RANGE_END, StringBuilder buffer);

string ret="";

StringBuilder IPretour= new StringBuilder(50);
getIPfromMAC(MAC, IPdebut, IPfin, IPretour);
ret = IPretour.ToString();


Tout ca sous Visual Studio (il me semble que la directive extern "C" __declspec(dllexport) est spécifique a VS)...