C++ 封装 ActiveX 接口运行时报错。

hanyuxinting 2010-11-22 11:07:27
封装 ActiveX 接口。其中接口为:

HRESULT getName([out,retval] BSTR* sName);

其中接口的实现是这样的:

STDMETHODIMP CName::getName(BSTR* sName)
{
string strName("test");
_bstr_t bstr = strName.c_str();
*sName= bstr.Detach();
return S_OK;
}


在封装时这样调用的:

IName* pName;
BSTR* sName = NULL;
pName->getName(sName);

但发现在运行代码时,出现崩溃现象。考虑应该是因为在调用时传参报错。但还不知道如何修订。请教~~~






...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyuxinting 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jameshooo 的回复:]

客户端调用错误,应该是:
IName* pName;
BSTR* sName = NULL;
BSTR sName = NULL;
pName->getName(&sName);
[/Quote]

嗯,正解~~谢谢 jameshooo~
jameshooo 2010-11-22
  • 打赏
  • 举报
回复
客户端调用错误,应该是:
IName* pName;
BSTR* sName = NULL;
BSTR sName = NULL;
pName->getName(&sName);
gw_net 2010-11-22
  • 打赏
  • 举报
回复
这样调用不对
你import tlb
然后用智能指针
和_bstr_t
INamePtr pName;
_bstr_t bs = pName->GetNaME();

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧