ctypes python_不同操作系统上的python ctypes问题

我正在尝试将C函数转换为python 3.6使用。

代码如下:

lib = ctypes.WinDLL('ftrScanAPI.dll') # provided by fingerprint scanner

class FTRSCAN_IMAGE_SIZE(ctypes.Structure):

_fields_ = [

("nWidth", ctypes.c_int),

("nHeight", ctypes.c_int),

("nImageSize", ctypes.c_int)

]

print('Open device and get device handle...')

hDevice = lib.ftrScanOpenDevice()

print('handle is', hDevice)

print('Get image size...')

Image_size = FTRSCAN_IMAGE_SIZE(0, 0, 0)

if lib.ftrScanGetImageSize(hDevice, ctypes.byref(Image_size)):

print('Get image size succeed...')

print(' W', Image_size.nWidth)

print(' H', Image_size.nHeight)

print(' Size', Image_size.nImageSize)

else:

print('Get image size failed...')

函数定义:

typedef struct FTR_PACKED __FTRSCAN_IMAGE_SIZE {

int nWidth;

int nHeight;

int nImageSize;

} FTRSCAN_IMAGE_SIZE, *PFTRSCAN_IMAGE_SIZE;

FTRHANDLE ftrScanOpenDevice(); # typedef void * FTRHANDLE;

BOOL ftrScanGetImageSize(FTRHANDLE ftrHandle,

PFTR_SCAN_IMAGE_SIZE pImageSize);

但是具有相同代码的不同操作系统似乎具有不同的结果:

在Windows 7 64位上

5d8dc1a50001660405000209.jpg

在Windows 10 64位上,

我不打印“句柄在这里”

5d8dc1a800013cad05000094.jpg

我尝试过的操作:

根据有关堆栈溢出的一些答案,这可能是由于未明确分配函数argtypes和restype引起的,所以我尝试并失败了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值