int __stdcall InitCredA_
(
LPSTR ioIdBuf,
LPDWORD ioIdLenPtr,
LPCSTR inPrompt,
LPCSTR inPathToIcon,
DWORD inWaitTimeout,
WORD inNum
) ;
Соглашение функций при вызове DLL
Выдает ошибку
Цитата:
The value of ESP was not properly saved across function call. This is usually a result of calling a function with one calling convention with a function pointer with a function pointer declared with a calling convention
DLL написана на С++, исходников увы нет... есть тока .h файл и то "недодефайненый".. в нем
Код:
Я сделал
Код:
typedef int (__stdcall *PFN_MyFunction1)(char[7] ,int *, char *, char *, int, int *);
и вызвал как
Код:
int iCode=(pfnMyFunction1)("I00001", &id_len, 0, 0, INFINITE, 0);
Функция вызывается, но после нее выдает ошибку эту.. как я понимаю при очистке стека.
Посмотри (отладчиком или дизассемблером), что вызывается при выходе из функции. Если это ret, то стек должен очищать вызывающий код, и функция описана неверно.
Если же там ret 18h, а именно это и должно быть по виду функции, то все ок.
Код:
//typedef int (__stdcall *PFN_MyFunction1)(char[7] ,int *, char *, char *, int, int *);
typedef int (__stdcall *PFN_MyFunction1)(char *, unsigned long, const char *, const char *, unsigned long, unsigned short);
typedef int (__stdcall *PFN_MyFunction1)(char *, unsigned long, const char *, const char *, unsigned long, unsigned short);
При условии корректной работы самой функции.
Спасиб, перестал мудрить и прошло ))