zubrytsky
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте! Еще один вопрос. По той же теме - FireBird UDF 64 bit. Воспользовался советами, стал разбираться с Lazarus. У меня на компьютере Windows 7 32 bit. Библиотеку UDF надо сделать для FireBird-сервера 2.5 64 bit, установленного под Windows Server 2008 64 bit. lazarus-1.2.2-fpc-2.6.4-win32.exe - установил себе эту версию Lazarus lazarus-1.2.2-fpc-2.6.4-cross-x86_64-win64-win32.exe - плюс этот пакет для генерации 64bit библиотек. В свойствах проекта в Lazarus меняю целевую ОС с Win32 на Win64, семейство процесса меняю с i386 на x86_64. Генерирую простую функцию function f_suma(var a,b:single):single; cdecl; export; //stdcall; begin Result:=a+b; end; exports f_suma; Библиотека генерируется без ошибок. Записываю ее в каталог с:\Program Files\Firebird\Firebird_2_5\UDF Регистрирую на сервере: DECLARE EXTERNAL FUNCTION f_suma float, float RETURNS float BY VALUE ENTRY_POINT 'f_suma' MODULE_NAME 'DLL_perepal_64' Делаю запрос в Ibexpert: select f_suma(10,20) from arch - результат функции 0 , а не 30 select f_suma(tpov, tcv) from arch - тоже результат столбик с нулями Что не так сделано? Если В свойствах проекта Win32 и i386, то есть библиотека 32bit и записать ее на 32bit - сервер - функция работает. Значит, ошибка где-то в этих 64bit. Пробовал делать еще проще: Result:=1000. Под FireBird 32 bit - работает, под FireBird 64 bit - результат функции снова 0. Ошибки нет, но и результата нет. Может, кто-то подскажет? |