描述:
在com组件中:
*.idl文件里:
interface IPlat : IDispatch{
.....
[id(9), helpstring("方法GetInfo")] virtual HRESULT GetInfo(LONG* lMYType, BSTR* sMyName)
}
com.dll的类中实现:
public:
STDMETHOD(GetInfo)( LONG* lMYType, BSTR* sMyName)
{
CComBSTR sSTR;
*lType = MYGOODSTYPE;
sSTR.LoadString(IDS_GOODNAME);
*sName = SysAllocString(sSTR);
return S_OK;
}
。。。。。。。。
在mfc的.exe中调用dll的接口的函数以传递数据:
LONG lMyType;
BSTR sMyName;
HRESULT hr = ::CoCreateInstance(clsid,NULL, CLSCTX_INPROC_SERVER,
IIDPlat,
(void**)&pCOM);
if (SUCCEEDED(hr))
{
IPlat *pPlat;
pCOM->QueryInterface(IIDPlat, (void **)&pPlat);
pPlat->GetInfo(&lMyType, &sMyName);
.....
.....
}
问题:
pPlat->GetInfo(&lMyType, &sMyName);。。。。。出现cxx0017错误:lMyType, sMyName为无法辨认
的符号!!!!!!!!!!
解决方案1:
LONG lMyType;
BSTR sMyName; 声明与该报错语句在同一作用域吗?
[id(9), helpstring("方法GetInfo")] virtual HRESULT GetInfo( [ out ] LONG* lMYType, [ out ] BSTR* sMyName)
对!加上[out]