ctypes python3_python3;ctypes;指向数组的指针

我想通过ctypes模块调用一个函数(AES_crypt),该函数来自xx.dll,这是我的代码(python 3.6.1):def fillprototype(f, restype, argtypes):

f.restype = restype

f.argtypes = argtypes

def tuple2pointer(number):

size = len(number)

c_number = (c_ulong * size)(*number)

cnum = cast(c_number, POINTER(c_ulong))

return cnum

type_array_ulong = POINTER(c_ulong)

fillprototype(AES_crypt, c_ulong, [type_array_ulong,

type_array_ulong, c_ulong, type_array_ulong, type_array_ulong,

type_array_ulong, c_ulong, c_ulong] )

iv = tuple2pointer(iv)

pa = tuple2pointer(pa)

pt = tuple2pointer(pt)

ct = tuple2pointer(ct)

rt = tuple2pointer(rt)

key = tuple2pointer(key)

AES_crypt(

byref(rt),

byref(ct),

blk_len,

byref(iv),

byref(key),

byref(pa),

AES_DECRYPT,

AES_ECB_MODE

)

C函数的原型是:

^{pr2}$

但是,调试信息是:Traceback (most recent call last):

File "D:\Project\python\aes_vs\aes_vs\aes_vs.py", line 113, in

AES_ECB_MODE

ctypes.ArgumentError: argument 1: : expected LP_c_ulong

instance instead of pointer to LP_c_ulong

我想知道为什么我能做什么?

谢谢您!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值