Доброго всем времени суток
есть DLL с заголовком на С. Требуется произвести вызов из аксапты. Проблема в том, что не работает.
На С прототип выглядит так:
Код:
ISC_STATUS ISC_EXPORT isc_attach_database (ISC_STATUS ISC_FAR *,
short,
char ISC_FAR *,
isc_db_handle ISC_FAR *,
short,
char ISC_FAR *);
Он проинтерпритирован так:
Код:
isc_attach_database = new DllFunction(GDS32, "isc_attach_database");
isc_attach_database.returns(ExtTypes::DWord);
isc_attach_database.arg(ExtTypes::Pointer,
ExtTypes::Word,
ExtTypes::String,
ExtTypes::Pointer,
ExtTypes::Word,
ExtTypes::String);
вызов на С:
Код:
isc_db_handle DB;
ISC_STATUS status_vector[20];
short dpb_buf_len=20;
char dpb_buf[]={
isc_dpb_version1, //версия буфера
isc_dpb_user_name, //начинается кластер параметра имя пользователя
6, //длина этого параметра 6 байт
'S','Y','S','D','B','A', //строка имени пользователя
isc_dpb_password, //начинается кластер пароля пользователя
9, //длина его 9 байт
'm','a','s','t','e','r','k','e','y' //сам пароль
};
isc_attach_database(status_vector, strlen(str), str, &DB,dpb_buf_len,dpb_buf));
Запускается, но не работает в аксапте. выдает код, означающий Invalid DB handle. Другие ф-ии из этой же DLL работают нормально. Под С
все работает.... %(
Подскажите, плз, в чем грабли...