Есть dll, написанная на Delphi.
Описание функции из dll для подключения к БД:
function IC_reg(aserver_host: Pchar; aserver_port: Pchar; arm:char; user_name,password: Pchar; var answer: Pchar; abufsize: integer):integer; stdcall;
Пример работающего кода на Delphi:
procedure TForm1.RegBitBtnClick(Sender: TObject); var rp: Pchar; ri: integer; begin GetMem(rp,32000); ri:=IC_reg('127.0.0.1','6666',IRBIS_ADMINISTRATOR,'1','1',rp,32000); Caption:=IntToStr(ri); Memo1.Lines.Text:=String(rp); FreeMem(rp); end;
Мой код на Python:
from ctypes import * _dll = windll.irbis64_client IC_reg = _dll.IC_reg ServerIP = "127.0.0.1" ServerPort = "6666" ARM = "A" Login = "1" Password = "1" sBuffer = c_wchar_p(" " * 32000) Size = 32000 IC_reg.restypes = [c_wchar_p, c_wchar_p, c_wchar, c_wchar_p, c_wchar_p, c_wchar_p, c_int] IC_reg.argtypes = [c_wchar_p, c_wchar_p, c_wchar, c_wchar_p, c_wchar_p, POINTER(c_wchar_p), c_int] ans = IC_reg(ServerIP, ServerPort, ARM, Login, Password, byref(sBuffer), Size)
Как реализовать, подглядел тут: https://ru.stackoverflow.com/questions/766433/Вызов-функции-из-dll-написанной-на-delphi-из-python
При выполнении кода вываливается “Access violation at address 4004D597 in module ”irbis64_client.DLL“. Read of address 00000000.”
В чем может быть проблема?