1

我正在尝试使用 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。有没有办法传递我缺少的字符串?

谢谢

劳伦斯

4

0 回答 0