使用memcpy

时间:2017-01-30 13:34:38

标签: python c++ com

我正在尝试在我的工作场所与大量用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数组?

由于

格雷格:)

0 个答案:

没有答案