z_san
Messages postés80Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention24 mai 2007
-
29 mai 2006 à 13:49
z_san
Messages postés80Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention24 mai 2007
-
9 juin 2006 à 16:06
Voilà j'utilise une dll que j'ai développé en C, dans un programme C#.
Quand j'appel une fonction de la dll par DLLImport, au moment ou le programme passe sur l'appel de cette méthode, celà me génére une exception du type "Is not PInvoke compatible"
J'avoue en perdre mon latin, ai-je fait une fausse manip dans l'appel de la fonction
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 29 mai 2006 à 14:02
Salut
Qu'est-ce qui n'est pas "PInvoke compatible" ? Un type dans la signature de ta Méthode ?
Il nous en faudrait un peu plus (Exception complete, signature de la méthode, declaration pInvoke, ...)
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 29 mai 2006 à 15:23
Salut, comme Mx j'aimerais bien voir le prototype C et le prototype managé.. Si je comprends bien tu alloues une structure avec new dans ton code en C et tu la renvois avec return.. Dans ce cas c'est un IntPtr qu'il faut, et il faut aussi mettre en place un mécanisme pour libérer la mémoire non managée.
z_san
Messages postés80Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention24 mai 2007 30 mai 2006 à 16:37
J'ai toujours un souci de type qd je met un string j'ai toujours mon exception de levée, même si j'utilise ref, aprés quand je modifie que je met un int àa passe mais me retourne une valeur de int qui n'est pas celle que je veux.
z_san
Messages postés80Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention24 mai 2007 31 mai 2006 à 16:18
Effectivement ça change quelque chose j'ai plus l'exception mais ma chaine de retour dans ma strucuture(celle que je marshal en string) elle est vide j'essai de l'afficher mais rien vide de chez vide
je fais un
maStruct = GetStruct();
string s = Marshal.PtrToStringAnsi( myStruct.text );
Console.WriteLine(s);
mais myStruct.text est vide (0 pour être plus précis)