Mam sobie 2 pliki dll wykorzystywane w programie.
W pierwszym jest exportowana funkcja ustawMenu(DWORD addr);
Drugi dll importuje ta funkcje i wywoluje ja w taki sposob:
UINT CALLBACK menuProc(UINT status)
{
if(status == 0)
return 1;
return 0;
}
// wywolanie
ustawMenu((DWORD)menuProc);
W pierwszym dll funkcja ustawMenu wyglada tak:
// plik .h
extern "C" __declspec(dllexport) void ustawMenu(DWORD addr);
// plik .cpp
typedef UINT (*fmenuProc)(UINT);
fmenuProc menuProc;
void ustawMenu(DWORD addr)
{
menuProc = (fmenuProc)addr;
menuProc(1); // <- Blad.
}
Blad jest taki iz wyrzuca komunikat Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call....
Blad oznacza nic innego jak roznice w konwencji funkcji.
Problem w tym, ze po dosc dlugiej dlubaninie w kodzie, po googlach i msdn nie mam pojecia jak rozwiazac ten problem.
Dziekuje z gory za łaskawe oświecenie. Ja mam dosc juz kombinacji na dzis :)