com Ptr小问题,完整代码

emmai 2003-07-08 11:03:11
#include "stdafx.h"

int main(int argc, char* argv[])
{
IdoscomPtr ptr;
ptr.CreateInstance(__uuidof(Idoscom));
ptr->HelloWorld();
ptr.Release();
return 0;
}

这段代码CreateInstance不成功!
而我用CoCreateInstance的方法可以,用Ptr就不行
请教~
...全文
29 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
emmai 2003-07-12
  • 打赏
  • 举报
回复
楼上的,正是如此,改成CLSID_doscom就可以了

有个问题不明白:为什么ADO里面可以用pRS.CreateInstance(__uuidof(Recordset));呢
而这里不行?
ilovevc 2003-07-09
  • 打赏
  • 举报
回复
IdoscomPtr ptr;
ptr.CreateInstance(__uuidof(Idoscom));

CreateInstance的参数不是Interface ID, 而是ClassID.
你试试
ptr.CreateInstance(CLSID_doscom);
应该就可以了.

其实, IdoscomPtr这个模板类已经知道了它需要的Interface ID,所以,
InterfaceID不会再作为一个参数.否则, 完全是多余的.

badcrow 2003-07-09
  • 打赏
  • 举报
回复
0x80040154意思是没有注册类别,
你没有注册?
使用的是exe com?
另:CoInitialize是必须的,除非Mfc已经调用了
donger 2003-07-09
  • 打赏
  • 举报
回复
d~
badcrow 2003-07-08
  • 打赏
  • 举报
回复
第一,你得CoInitialize在那?
第二,不要调用Release,_com_ptr自个调用了
第三,你也不说,为什么不成功,返回值多少?
emmai 2003-07-08
  • 打赏
  • 举报
回复
我加了CoInitialize(0)也不行~
emmai 2003-07-08
  • 打赏
  • 举报
回复
顶~
emmai 2003-07-08
  • 打赏
  • 举报
回复
come in~~~~
emmai 2003-07-08
  • 打赏
  • 举报
回复
我不用智能指针就是正确的,代码如下

#include "stdafx.h"
#include "..\comtut.h"

int main(int argc, char* argv[])
{
LPUNKNOWN pUnk;
Idoscom *pDosCom;
HRESULT hr;
hr=CoInitialize(NULL);
hr=CoCreateInstance(CLSID_doscom,NULL,CLSCTX_LOCAL_SERVER,IID_IUnknown,(void far**)&pUnk);
pUnk->QueryInterface(IID_Idoscom,(void far**)&pDosCom);
pDosCom->HelloWorld();
pDosCom->Release();
pUnk->Release();
CoUninitialize();
return 0;
}
emmai 2003-07-08
  • 打赏
  • 举报
回复
加了#import "doscom.dll"了
如果不加就没有IdoscomPtr了,编译也通不过啊
zhp80 2003-07-08
  • 打赏
  • 举报
回复
.h 中没有#import "..." 吧?
venturetech 2003-07-08
  • 打赏
  • 举报
回复
你#import类型库正常吗?
emmai 2003-07-08
  • 打赏
  • 举报
回复
晕啊,怎么没人回了啊~~~
emmai 2003-07-08
  • 打赏
  • 举报
回复
偶是com新手,请指教,3x
emmai 2003-07-08
  • 打赏
  • 举报
回复
1.我先没用CoInitialize(NULL);不行,然后在最前面加上也不行
2.好像用IdoscomPtr ptr(__uuidof(Idoscom));才不需要Release
3.返回值是0x80040154

3,245

社区成员

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

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