|  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-US  fficial | 
|  | 
|  07.03.2006, 18:18 | #4 | 
| Участник | 
			
			Решение проблемы здесь -  http://www.axforum.info/forums/showthread.php?t=12497
		 | 
|  |