如下的c++代码在delphi中怎么声明和传递
如下的c++代码在delphi中如何声明和传递?
struct CapInfoStruct
{
UCHAR *Buffer; // 用户分配,用于返回原始数据8bit
ULONG Height; // 采集高度
ULONG Width; // 采集宽度
ULONG OffsetX; // 水平偏移
ULONG OffsetY; // 垂直偏移
ULONG Exposure; // 曝光值
UCHAR Gain[3]; // R G B 增益 1-63
};
HQDL_API
HqDLInitialize( IN LPCTSTR pFilterName,
OUT int *pIndex,
IN CapInfoStruct *pCapInfo,
OUT HANDLE *hCamera
);
再提供点调用情况: memset( &m_CamFeature, 0, sizeof( CAMFEATURE ) );
m_pRawData = NULL;
m_pRawData = ( BYTE* ) new BYTE [ MAXWIDTH * MAXHEIGHT + 512 ];
m_pRgbData = NULL;
m_pRgbData = ( BYTE* ) new BYTE [ MAXWIDTH * MAXHEIGHT * 3 ];
memset( &m_CapInfo, 0, sizeof( CapInfoStruct ) );
m_CapInfo.Buffer = m_pRawData;
m_CapInfo.Width = 2048;
m_CapInfo.Height = 1536;
m_CapInfo.Exposure = 60;
memset( m_CapInfo.Gain, 44, 3 );
m_comboSize.SetCurSel( 2 );
m_comboColor.SetCurSel( 0 );
int nIndex;
ResSuccess = HqDLInitialize(_T("DLC"), &nIndex, &m_CapInfo, &m_hDevice );
怎么转化为Delphi代码
------解决方案--------------------
那就把声明里的参数转定义成指针,把函数声明定义成类型可以了
type
HqDLInitialize = function (...):...;
PHqDLInitialize = ^HqDLInitialize;
然后不用实现了,直接加载dll,用PHqDLInitialize类型的变量取到函数地址后直接执行应该可以的了.
struct CapInfoStruct
{
UCHAR *Buffer; // 用户分配,用于返回原始数据8bit
ULONG Height; // 采集高度
ULONG Width; // 采集宽度
ULONG OffsetX; // 水平偏移
ULONG OffsetY; // 垂直偏移
ULONG Exposure; // 曝光值
UCHAR Gain[3]; // R G B 增益 1-63
};
HQDL_API
HqDLInitialize( IN LPCTSTR pFilterName,
OUT int *pIndex,
IN CapInfoStruct *pCapInfo,
OUT HANDLE *hCamera
);
再提供点调用情况: memset( &m_CamFeature, 0, sizeof( CAMFEATURE ) );
m_pRawData = NULL;
m_pRawData = ( BYTE* ) new BYTE [ MAXWIDTH * MAXHEIGHT + 512 ];
m_pRgbData = NULL;
m_pRgbData = ( BYTE* ) new BYTE [ MAXWIDTH * MAXHEIGHT * 3 ];
memset( &m_CapInfo, 0, sizeof( CapInfoStruct ) );
m_CapInfo.Buffer = m_pRawData;
m_CapInfo.Width = 2048;
m_CapInfo.Height = 1536;
m_CapInfo.Exposure = 60;
memset( m_CapInfo.Gain, 44, 3 );
m_comboSize.SetCurSel( 2 );
m_comboColor.SetCurSel( 0 );
int nIndex;
ResSuccess = HqDLInitialize(_T("DLC"), &nIndex, &m_CapInfo, &m_hDevice );
怎么转化为Delphi代码
------解决方案--------------------
那就把声明里的参数转定义成指针,把函数声明定义成类型可以了
type
HqDLInitialize = function (...):...;
PHqDLInitialize = ^HqDLInitialize;
然后不用实现了,直接加载dll,用PHqDLInitialize类型的变量取到函数地址后直接执行应该可以的了.