Использование DLL в Python 2.7 с ctypes - PullRequest
1 голос
/ 22 декабря 2011

У меня проблема с использованием файла DLL.Код, который я использовал ниже.В справочнике DLL написано подпись функции.Я использую Python 2.7

from ctypes import *
mtrs= windll.LoadLibrary("mtrs.dll")
mtrs.sw_Open("SystemWorks", 0, c_ulong( 0x100 | 0x10000), None, None)
0

В справочнике DLL он записывает подпись функции.

DLLINOUT BOOL WINAPI sw_Open(LPCSTR DeviceName, ULONG DeviceNumber, ULONG OpenFlags, void * Arg1, void * Arg2 );

Функция возвращает false, если устройство не открыто.Есть ли ошибка в параметрах?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2011
#!/usr/bin/env python3
from ctypes import *
mtrs= windll.LoadLibrary("mtrs.dll")
mtrs.sw_Open.argtypes = [c_char_p, c_ulong, c_ulong, c_void_p, c_void_p]
mtrs.sw_Open.restype = c_bool
mtrs.sw_Open(b"SystemWorks", c_ulong(0), c_ulong( 0x100 | 0x10000), None, None)
0 голосов
/ 22 декабря 2011

Если вы используете Python 3x, вы должны использовать b"SystemWorks", потому что первый аргумент имеет тип LPCSTR.

...