PierreCSharp63
Messages postés7Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention26 mars 2008
-
25 mars 2008 à 09:56
PierreCSharp63
Messages postés7Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention26 mars 2008
-
26 mars 2008 à 11:14
bonjour,
malgré toutes mes recherches et essais, je n'arrive décidément pas à appeler une fonction C++ depuis le C#. En effet cette fonction alloue un tableau de structures et attend donc l'adresse d'un pointeur de structure ( donc un pointeur de pointeur ).
PierreCSharp63
Messages postés7Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention26 mars 2008 25 mars 2008 à 14:47
Il semble que je sois incapable de récupérer un pointeur défini par la DLL :
J'ai défini la fonction TEST4 qui ressemble à celle que je dois utiliser (mais dont je n'ai pas le source ):
typedef struct {
int a;
} STRUCTTEST;
__declspec(dllexport) int TEST4( STRUCTTEST ** pp, int iCount )
{
STRUCTTEST *p;
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 25 mars 2008 à 17:36
Dans ton dernier exemple avec "ref pTest", pTest est il resté à zéro ? Il va aussi se poser le problème de la libération de la mémoire, elle est allouée avec calloc , ce n'est plus possible de la libérer du coté managé, à moins de coder une fonction Free ( Test4* p ) mais ça ne sera pas possible pour l'autre code.
PierreCSharp63
Messages postés7Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention26 mars 2008 26 mars 2008 à 11:14
bonjour,
je viens de résoudre mon problème qui était dû à un paramètre de type chaine défini avec Charset=auto !! : c'est une addresse IP et la chaine était coupée au premier '.'.
Je confirme donc l'utilisation de "Out IntPtr pTab" comme paramètre.
Pour la libération de la mémoire, elle est effectuée par une autre fonction de la DLL.