【发布时间】:2011-08-08 00:42:06
【问题描述】:
我有一个 COM+ VB6 应用程序,我使用 MIDL 编译器生成了一个头文件。 标头包含以下定义:
virtual /* [id] */ HRESULT STDMETHODCALLTYPE Gett(
/* [in] */ BSTR sPostCode,
/* [in] */ BSTR sSurname,
/* [retval][out] */ _Recordset **__MIDL_0012) = 0;
在我的 c++ 客户端调用中调用这个 ive 导入
#import "C:\Program files\Common Files\System\Ado\msado15.dll"
rename("EOF", "ADOEOF")
GetAddress 函数被调用如下:
void AddressLookup::GetAddress(_bstr_t postCode, _bstr_t address)
{
ADODB::_RecordsetPtr recordset;
HRESULT hr = recordset.CreateInstance(__uuidof(ADODB::Recordset));
m_pIAddressLookup->Gett(postCode, address, recordset);
}
但我不断收到此编译器错误:
AddressLookup.cpp(20):错误 C2664: '_AddressLookup::Gett':不能 将参数 3 从 'ADODB::_RecordsetPtr' 到 '_Recordset ** ' 没有可以执行的用户定义的转换运算符 此转换或运算符 无法调用
【问题讨论】:
标签: c++ visual-c++ com dcom