Как правильно переносить интерфейсы и процедуры с функциями из delphi в python?

У Меня есть DLLка, к которой приложен лишь код на Делфи. При вызове любой функции выходит ошибка к примеру "AttributeError: '_FuncPtr' object has no attribute 'GetProtoIntfVer'" Цель какова - при помощи питона законнектиться на сервер Bimoid и сделать так сказать миниботик, но для начала надо приконнектиться к серверу, чтобы мог получать и отправлять сообщения.

from ctypes import *

PROTO_INTF_VERSION = 1003
obimp_lib = windll.LoadLibrary(r"C:\Python\BimoidServer32\mobimp.dll")
FuncCreateObimp = obimp_lib.CreateObimp

Вот код на делфи, описывающий DLL: Ссылка на гугл диск

Там много процедур, и сюда пытался поместить, но всё это начинает выглядеть не очень красиво, можно конечно скриншотами - но так всё будет больше весить.


Ответы (1 шт):

Автор решения: Vlad Chapl

В одном из питоновких скриптов (site-packages\zmq\utils\win32.py) нашел такое использование:

from ctypes import WINFUNCTYPE, windll
from ctypes.wintypes import BOOL, DWORD

kernel32 = windll.LoadLibrary('kernel32')

# <http://msdn.microsoft.com/en-us/library/ms686016.aspx>
PHANDLER_ROUTINE = WINFUNCTYPE(BOOL, DWORD)
SetConsoleCtrlHandler = kernel32.SetConsoleCtrlHandler
SetConsoleCtrlHandler.argtypes = (PHANDLER_ROUTINE, BOOL)
SetConsoleCtrlHandler.restype = BOOL 

Так же может посмотрите _link_library(), getattr(). Судя по тому, что в obimp_dll.pas всюду написано stdcall, проблем не должно быть. А вот с interface не знаю. Вообще в obimp_dll.pas нет кода как такового, только описание типов и несколько констант.

→ Ссылка