Voici le code en C++ dll:C# wrapper de C++ dll; "Échec de vérification d'exécution # 0 - La valeur d'ESP n'a pas été enregistrée correctement lors d'un appel de fonction." erreur
extern "C" _declspec(dllexport) int testDelegate(int (*addFunction)(int, int), int a, int b)
{
int res = addFunction(a, b);
return res;
}
et est ici le code en C#:
public delegate int AddIntegersDelegate(int number1, int number2);
public static int AddIntegers(int a, int b)
{
return a + b;
}
[DllImport("tester.dll", SetLastError = true)]
public static extern int testDelegate(AddIntegersDelegate callBackProc, int a, int b);
public static void Main(string[] args)
{
int result = testDelegate(AddIntegers, 4, 5);
Console.WriteLine("Code returned:" + result.ToString());
}
Quand je commence cette petite application, je reçois le message de l'en-tête de ce poste . Quelqu'un peut-il aider, s'il vous plaît?
Merci à l'avance,
D
Ah, upvoting votre réponse pour 'CallingConvention.Cdecl' comme je l'étais entièrement ignorant cela. –
Les gars, merci beaucoup. Vous avez résolu mon problème. –
Cependant, cela fonctionne pour moi quand, à la place [UnmanagedFunctionPointer (CallingConvention.Cdecl)] public delegate int AddIntegersDelegate (int nombre1, nombre entier2); Je mets: [UnmanagedFunctionPointer (CallingConvention.StdCall)] délégué public int AddIntegersDelegate (int nombre1, entier nombre2); –