_bstr_t的使用问题

kivenanlice 2011-12-02 09:35:58
在一个函数中定义两个局部的_bstr_t变量
_bstr_t strA = "A";
_bstr_t strB = "B";

调用一个COM接口将这两个变量当做参数传入
m_pComObj->Fun(strA,strB);

问题:
程序启动第一次调用这个函数时,变量strA,strB的值是正确的,分别为"A","B"。但这后再调用这个函数时这两个变量的值都为"B"。

请高手指点迷津。
...全文
102 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kivenanlice 2011-12-02
  • 打赏
  • 举报
回复
问题找到了。
COM接口中返回variant类型,返回值设置的不对
result->vt = VT_BSTR;
result->bstrVal = (_bstr_t)(-14); //出错
result->bstrVal = (_bstr_t)_T(""); //正确

感谢各位参与解答。
fishion 2011-12-02
  • 打赏
  • 举报
回复
不用_bstr_t,用BSTR看看吧
kivenanlice 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 oyljerry 的回复:]

调试一下,监控一下这个变量
[/Quote]

调试情况是这两个变更内部指针指向同一个地址。
奇怪的是定义的是两个局部变量,每次调用函数都会重新定义的,但只要调用过一次COM接口函数后就会出现问题。
oyljerry 2011-12-02
  • 打赏
  • 举报
回复
调试一下,监控一下这个变量
kivenanlice 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]

Fun内部改变了A的值?
[/Quote]
Fun函数不改变A的值。
ouyh12345 2011-12-02
  • 打赏
  • 举报
回复
Fun内部改变了A的值?

3,245

社区成员

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

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