调用COM组件接口函数时出现运行错误

lirongjun1985 2008-09-24 10:28:37
我在用智能指针调用ATL写的COM组件的时候出现运行时错误,跟踪调试的时候在
调用处,直接进入到这样一个函数:
Interface* operator->() const throw(_com_error)
{
if (m_pInterface == NULL) {
_com_issue_error(E_POINTER);
}

return m_pInterface;
}

请问这是怎么回事啊?
...全文
164 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyinlei 2008-09-25
  • 打赏
  • 举报
回复
接口改了,组件需要重新注册,调用组件的工程需要重新编译。
vocanicy 2008-09-24
  • 打赏
  • 举报
回复
你没有创建组件对象,要CreateInstance之后才能调用方法

IUdpChatPtr m_account;
m_account.CreateInstance(__uuidof(xxx));
lirongjun1985 2008-09-24
  • 打赏
  • 举报
回复
组件创建成功了,也成功注册了。
我是按这样的方法在STDAFX.H导入的:
#import "ChatCom.tlb" rename_namespace("AccountDriver")
using namespace AccountDriver;

然后定义一个智能指针:
IUdpChatPtr m_account;

m_account->start();调用函数

当我输入->的时候有提示有两个函数一个是start()一个是raw_start().调两个都会出错。

COM组件里的实现的函数名是start;
zzultc 2008-09-24
  • 打赏
  • 举报
回复
什么错误?代码是多少?
Occam's_Razor 2008-09-24
  • 打赏
  • 举报
回复
组件没创建成功?
lirongjun1985 2008-09-24
  • 打赏
  • 举报
回复
添上那句好使了 但是我把接口改了一下 又是运行错误。

3,245

社区成员

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

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