我正在尝试在我的工作场所与大量用C ++编写的软件进行交互。该软件的标准接口是Microsoft COM接口,我已经设法使用win32com“适当地”调度接口。我可以运行内置方法,并可以获取C ++函数显式返回的数据。
我正在努力处理C ++代码中的一些不返回数据的函数,而是需要一个内存地址并使用memcpy将变量传递给先前分配的内存。
void RetrieveData::GetData( long FAR* Data ){
memcpy( Data, m_pMeasureData, m_MeasureDataSize * sizeof( long ) );
}
这是我在python中调用的C ++函数,如下所示:
import array
import win32com.Client
IRD = win32com.client.Dispatch("Instrument.RetrieveData")
#Creating and Array of longs
arrayOfLongs = array.array('l')
#Init the list to be 25 items long with all 0 value
#I know the data is 25 items long from other functions
arrayOfLongs.fromlist([0]*25)
Data = IRD.GetData(arrayOfLongs)
我留下了以下错误:
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
IRD.GetData(arrayOfLongs)
File "<COMObject Instrument.RetrieveData>", line 2, in GetData
TypeError: Internal error - the buffer length is not the sequence length!
如何为C ++函数创建一个memcpy数组?
由于
格雷格:)