|
07.03.2006, 09:04 | #1 |
Участник
|
Вот такая штука, что при вызове функции из своей DLL, вылетает данная ошибка
Цитата:
The value of the ESP register was not properly saved across the call to function 'PGP_SetExecutablePath' in DLL library 'pgp_gnupg.dll'. This is usually a result of calling a DLL function that has been declared with an incorrect number of arguments.
X++ Код: DLL dll = new DLL("pgp_gnupg.dll"); DLLFunction funcSetExecutablePath; boolean b; ; if (!dll) throw error("No DLL found"); funcSetExecutablePath = new DLLFunction(dll, "PGP_SetExecutablePath"); if (!funcSetExecutablePath) throw error("No function PGP_SetExecutablePath found"); funcSetExecutablePath.returns( ExtTypes::Byte ); funcSetExecutablePath.arg( ExtTypes::String ); b = funcSetExecutablePath.call( this.PGPParameters().DLL ); Код: #define DLLEXPORT __declspec(dllexport) DLLEXPORT bool PGP_SetExecutablePath(LPCSTR _fileName) { if (!g_ExecutablePath) g_ExecutablePath = new char; strcpy( g_ExecutablePath, _fileName ); return true; } В чем проблема? Спасибо! |
|
07.03.2006, 10:12 | #2 |
Участник
|
может быть так
funcSetExecutablePath.returns( ExtTypes:WORD ); |
|
07.03.2006, 10:15 | #3 |
Участник
|
Нет, не помогает... по всякому уже пробовал ;(
С поинтерами тоже не идет (из примера в WinApi) Код: DLL dll = new DLL("ax_testdll.dll"); DLLFunction f; binary pArg = new Binary("qwerqwefasdf asdfa sd"); ; WinAPI::fileExists( "asdfas" ); // works fine!!! f = new DLLFunction(dll, "fnAx_testdll" ); if (f) { f.returns( ExtTypes::void ); f.arg( ExtTypes::Pointer ); f.call(pArg); } Самое странное, что это какая то глобальная ошибка - исщя в google - выдает много разных результатов ... http://www.google.lv/search?q=The+value+of...:en-USfficial |
|
07.03.2006, 18:18 | #4 |
Участник
|
Решение проблемы здесь - http://www.axforum.info/forums/showthread.php?t=12497
|
|