2
回答
python调用C写的dll
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

@fzyz_sb 你好,想跟你请教个问题:windows平台上,Python调用C写的dll,dll采用cdecl,在调用AR_GetCount()函数时可以正确返回,调用AR_OpenByID()时,报错valueError:procedure called with enough arguments <4 bytes missing> or wrong calling convention.代码如下:

from ctypes import cdll

print ('starting...')
dll=cdll.LoadLibrary('./AmUfdHlp.dll')
count=dll.AR_GetCount()
print (count)
byid=dll.AR_OpenByID(0)
print ('Open succeed!')

看到请回复啊,谢谢喽

举报
pei_pei
发帖于3年前 2回/571阅
共有2个答案 最后回答: 3年前

        谢谢提问。我看了一下,感觉就是参数调用的问题。就是传入的参数也许不止一个,或者传入的是int,结果被解析为float,或者为float,解析为int...这些都有可能,具体要看你封装的这个dll中函数的定义。

        个人能力有限,无法再看到更多了,抱歉。

--- 共有 1 条评论 ---
pei_pei恩,自己在研究一下,谢谢 3年前 回复

需要指定参数的类型,如果有多个参数都需写入参数列表中:

byid=dll.AR_OpenById

byid.argtypes = [ctypes.c_int]

byid.restypes = ctypes.c_int

rtn = byid(0)

顶部