Как правильно переносить интерфейсы и процедуры с функциями из 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 шт):
В одном из питоновких скриптов (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 нет кода как такового, только описание типов и несколько констант.