Python类型。如何将LPVOID传递到C++;功能

Python类型。如何将LPVOID传递到C++;功能,python,ctypes,Python,Ctypes,我尝试使用cType将字符串传递给C++函数,并返回一个。函数声明是: BOOL PERFORMAXCOM_API _stdcall SendReceive(IN HANDLE pHandle, IN LPVOID wBuffer, IN DWORD dwNumBytesToWrite, IN DWORD dwNumBytesToRead,

我尝试使用cType将字符串传递给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
一起使用时,会返回一个字符串

我当前从输入的字符串
cmdStr
(例如“E0=1”)在LPVOID中创建
的方法是:

然后,我使用以下声明将其传递给函数:
Status=SendReceive(byref(hUSBDevice),c_void_p(addressof(SendStr)),64,64,ReplyBuffer)

我尝试了许多不同的排列方式,将
SendStr
传递给函数,但从未在
ReplyBuffer
中通过空字符串获取任何内容。有没有办法传递我丢失的绳子

谢谢


Laurence

我不认为我完全理解您的问题,但在示例中没有问题:DLL代码:和python代码:。感谢您的回复。我进一步研究了它,我发现我的问题是,我能够在我的一个python函数定义中使用函数调用,但不能在另一个函数定义中使用。我将进一步调查,但在将句柄从一个函数传递到另一个函数时是否会出现问题?
szSendStr = c_char * 64
SendStr = szSendStr()

for i in range(len(cmdStr)):
    SendStr[i] = cmdStr[i]