Appeler une fonction C depuis c#
Salut,
j'essaie d�sesp�r�ment d'appeler une fonction c depuis un programme c#.
Ma fonction C est d�clar�e comme tel :
Code:
1 2 3 4 5 6
| extern "C" PAGODE
__declspec(dllexport)
__stdcall PagodePrice(char *ssj, double cours, char *cp, int jj, int mm, int aa, double strike, char *ae)
{
return _PagodePrice(ssj, cours, cp, jj, mm, aa, strike, ae) ;
} |
la structure de retour est d�clar�e de la sorte :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| typedef struct PAGODES
{
double value ;
double delta ;
double gamma ;
double vega ;
double theta ;
double rho ;
double dvega ;
double dvvm ;
double rsmile ;
double rdvmin ;
double vol ;
double volC ;
double vegart ;
double vegah ;
double rsmileh ;
double rsmilert ;
char ts[50] ;
} PAGODE ; |
J'ai tent� d'appeler la fonction en utilisant
Code:
1 2 3
| [DllImport("pagode32.dll", EntryPoint = "_PagodePrice@40")]
public static extern IntPtr PagodePrice(
[In]string X_CODE_Long, [In]double cours, [In]string cp, [In]int jj, [In]int mm, [In]int aa, [In]double strike, [In]string ae); |
J'ai tent� de remplacer l'Entrypoint par le nom de la fonction "PagodePrice", le type de retour IntPtr par une classe PAGODE �quivalente C# mais rien n'y fait
J'obtiens toujours une exception "AccessViolationException"
Citation:
"Tentative de lecture ou d'�criture de m�moire prot�g�e. Cela indique souvent qu'une autre m�moire est endommag�e"
Je suis s�r que la fonction de la DLL fonctionne parfaitement car d�j� utilis�e dans une vieux programme C.
J'utilise une autre fonction de cette DLL qui fonctionne tr�s bien
Code:
1 2 3
| [DllImport("pagode32.dll",EntryPoint="PagodeForward")]
public static extern double PagodeForward(
[In]string X_CODE_Long, [In]double cours, [In]int jj, [In]int mm, [In]int aa); |
Est-ce que quelqu'un a une id�e? Merci d'avance