救命!!为什么我的COM在调用的时候总是出错?

rober 2000-05-17 04:29:00
我的COM在编译的时候是没有错的,但在客户程序中这样调用

//获得接口
VERIFY (!PSendData.CreateInstance("{4A83FA91-24B9-11D4-B483-0080C8ED1C0A}"));

出错!!!再这样调用:

//获得接口
VERIFY (!PSendData.CreateInstance("MyCom.GetName")); 还是出错!

我该怎么办??


...全文
355 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
geofee 2000-06-19
  • 打赏
  • 举报
回复
调用::ComInstance(NULL);了么!!!
geofee 2000-06-19
  • 打赏
  • 举报
回复
调用::CoInstance(NULL);了么!!!
wjf 2000-06-02
  • 打赏
  • 举报
回复
VERIFY不行,COM调用正确返回结果为S_OK,而S_OK==0;
应该用SUCCEEDED.
rober 2000-05-23
  • 打赏
  • 举报
回复
marksman,这么样才如你所愿?

Marksman 2000-05-21
  • 打赏
  • 举报
回复
你这样创建组件还真是少见
可以这样:
IPSendDataPtr pPSendData; //申明智能指针
//若无法使用智能指针,也可以这样
//CComPtr<IPSendData> pPSendData;
hr = pPSendData.CreateInstance(__uuidof(PSendData));
~~~~~~~~~视情而定
如果想使用PROID创建,则可以使用函数转换过来:CLSIDFromPROGID
或直接pPSendData.CreateInstance("PSendData.PSendData.1")
~~~~~~~~~~~~~~~~~~~~~~视情而定
你的两个函数编译没错,是因为编译器当他们是PROGID
创建失败就是PROGID错了,VC中创建对象最避讳PROGID了
可以用OLEVIEW工具查看你的组件的PROGID是否如你所愿

abc 2000-05-18
  • 打赏
  • 举报
回复
你是在MFC下调用,还是ATL?再详细一点

3,245

社区成员

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

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