我正在尝试使用 ctypes 将字符串传递给 C++ 函数,并得到一个作为回报。函数声明为:
BOOL PERFORMAXCOM_API _stdcall SendReceive(IN HANDLE pHandle,
IN LPVOID wBuffer,
IN DWORD dwNumBytesToWrite,
IN DWORD dwNumBytesToRead,
OUT LPVOID rBuffer)
HANDLE
我对和DWORD
变量很满意,并且通过OUT LPVOID
以下设置实现了类似的功能:
szReplyBuffer = create_string_buffer(64)
ReplyBuffer = c_char_p(addressof(szReplyBuffer))
当与类似的一起使用时,它会OUT LPVOID
得到一个字符串。
我目前IN LPVOID
从输入的字符串cmdStr
(例如“E0 = 1”)创建的方法是:
szSendStr = c_char * 64
SendStr = szSendStr()
for i in range(len(cmdStr)):
SendStr[i] = cmdStr[i]
然后我使用以下声明将其传递给函数:
Status = SendReceive(byref(hUSBDevice), c_void_p(addressof(SendStr)), 64, 64, ReplyBuffer)
我已经尝试了许多不同的将 传递给函数的排列SendStr
,但从来没有通过空字符串返回任何东西ReplyBuffer
。有没有办法传递我缺少的字符串?
谢谢
劳伦斯