DLL方法如下:
void _stdcall PostAndRecvEx(IN char* Post, OUT char* Recv)
parameters :
Post :input
Recv :output
Return value: None
我在Python中编写了以下代码:
-*- coding:utf-8 -*-
import ctypes,time
lib = ctypes.cdll.LoadLibrary('API.dll')
keyinfo = '''
<?xml version="1.0" encoding="UTF-8"?>
<business id="20002" comment="settings">
<body yylxdm="1">
<keypwd>88888888</keypwd>
</body>
</business>
'''
in_keyinfo = ctypes.c_char_p()
in_keyinfo.value = keyinfo
out = ctypes.create_string_buffer('\000'*32*128)
lib.PostAndRecvEx(in_keyinfo,out)
print out.value
但是我收到了以下错误:
Traceback (most recent call last):
File "re.py", line 15, in <module>
lib.PostAndRecvEx(in_keyinfo,out)
ValueError: Procedure called with not enough arguments (8 bytes missing) or wrong calling convention
我该如何解决这个问题?
答案 0 :(得分:0)
尝试lib = ctypes.windll.LoadLibrary('API.dll')
用(希望)正确的调用约定来调用DLL。
此外,您可以out = ctypes.create_string_buffer(32 * 128)
初始化该大小的空字符串。