Je souhaite faire appel à cette DLL depuis un projet C#.
Une foi générée je l'ai donc collé dans le répertoire BIN de mon projet.
Et j'appelle ensuite ma méthode de cette façon :
using System.Runtime.InteropServices;
[DllImport("LIBANTSYSDIGIPASS.dll")]
public static extern string LAD_Activation(string SERIAL, string CHS, string PIN);
static void Main(string[] args){
try{
string result = LAD_Activation("FDL0179608", "12132123", "1234");
Console.WriteLine("Activation Result ==> " + result);
Console.ReadLine();
}
catch (Exception e){
Console.WriteLine(e.ToString());
Console.ReadLine();
}
}
Lorsque je compile mon projet C#, je me retrouve avec l'erreur :
"Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire et endommagée."
Il se trouve que lorsque je commente la ligne d'appel au WebService de ma DLL en C, cela compile bien.
//soapResult = soap_call___ns2__Activation( oSoap, NULL, NULL, in, out);
J'ai parcouru tout le web en essayant de passant par des pointeur intPTR et autre sans succès.
Si quelqu'un a déjà développé une DLL en C avec des appels gSoap ou d'autres ont rencontrés le même type de problème, merci de m'éclairer.
MaGiKPoLo
Messages postés5Date d'inscriptionlundi 18 décembre 2006StatutMembreDernière intervention10 septembre 2010 10 sept. 2010 à 09:14
Tout d'abord merci pour ta réactivité.
Voila comment est constitué ma structure _ns1__ActivationResponse :
struct _ns1__ActivationResponse{
struct ns1__DigipassResponse *ActivationResult;
};
struct ns1__DigipassResponse{
int CodeRetour; /* required element of type xsd:int */
char *Message; /* optional element of type xsd:string */
struct ns1__ArrayOfString *Resultats; /* optional element of type ns1:ArrayOfString */
};
#endif
#ifndef SOAP_TYPE_ns1__ArrayOfString
#define SOAP_TYPE_ns1__ArrayOfString (8)
/* ns1:ArrayOfString */
struct ns1__ArrayOfString{
int __sizestring; /* sequence of elements <string> */
char **string; /* optional element of type xsd:string */
};
Lorsque j'alloue de la mémoire pour ma structure "out" de type "_ns1__ActivationResponse", ça n'alloue pas la mémoire pour la structure qu'elle contient, "ActivationResult" ?