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 :
la structure de retour est d�clar�e de la sorte :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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) ; }
J'ai tent� d'appeler la fonction en utilisant
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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� 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
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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'obtiens toujours une exception "AccessViolationException"
Je suis s�r que la fonction de la DLL fonctionne parfaitement car d�j� utilis�e dans une vieux programme C."Tentative de lecture ou d'�criture de m�moire prot�g�e. Cela indique souvent qu'une autre m�moire est endommag�e"
J'utilise une autre fonction de cette DLL qui fonctionne tr�s bien
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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
Partager