DLL在Python 2.7中使用ctypes

时间:2011-12-22 13:41:08

标签: python parameters ctypes

我在使用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 :(得分:0)

如果您使用的是Python 3x,则应使用b"SystemWorks",因为第一个参数的类型为LPCSTR

答案 1 :(得分:0)

#!/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)