ATL写的Com组件创建实例时报告错误“未注册类别”

coolstar 2004-07-26 09:32:00
ATL写的Com组件创建实例时报告错误“未注册类别”
atl写的com组件在asp中调用提示无法创建对象
组件已经用regsvr32 注册过,注册成功。

调试代码发现
在组件的一个接口构造函数中
HRESULT FinalConstruct()
{
HRESULT hr;
::CoInitialize(NULL);


hr = CoCreateInstance(
CLSID_Point,
NULL,
CLSCTX_INPROC,
__uuidof(IPoint),
(void **)&m_Point);

if(FAILED(hr))
{
_com_error err(hr);
MessageBox(NULL,(TCHAR*)err.ErrorMessage(),_T("创建点对象"),MB_OK);
return FALSE;
}
return S_OK;

}


CLSID_Point并没有被创建,提示错误是“未注册类别”


why?
...全文
341 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolstar 2004-07-28
  • 打赏
  • 举报
回复
像这样创建试试:(去掉COM的初始化)
CComObject< CMPoint >* pPt = NULL;
CComObject< CMPoint >::CreateInstance( &pPt);
pPt->AddRef();

创建是可以了,但是调用的时候
asp或者vb结果会报告
remote procedure call failed

谢谢wangweixing2000(星(准备跳槽中!!)) ,因为代码是公司商用代码,不方便。
wangweixing2000 2004-07-28
  • 打赏
  • 举报
回复
不行就发你的代码过来!我给你看看!
ColderRain 2004-07-27
  • 打赏
  • 举报
回复
"atl写的com组件在asp中调用提示无法创建对象"
把你创建的代码帖出来看看。怀疑你创建的时候对象名传递错误。
coolstar 2004-07-27
  • 打赏
  • 举报
回复
clsid是正确的

如果改成__uuidof(CPoint),编译器报告没有guid和CPoint关联

(注:此CPoint并非mfc中CPoint,我为了更好阅读把原有长名字缩短了)
wangweixing2000 2004-07-27
  • 打赏
  • 举报
回复
::CoInitialize(NULL); //这个不必用
hr = CoCreateInstance(
CLSID_Point, //这个clsid是否正确?
NULL,
CLSCTX_INPROC,
__uuidof(IPoint),
(void **)&m_Point);
如果实现类是CPoint那么
hr = CoCreateInstance(
__uuidof(CPoint),
NULL,
CLSCTX_INPROC,
__uuidof(IPoint),
(void **)&m_Point);
luohualiushui 2004-07-27
  • 打赏
  • 举报
回复
不错,断点调试一下

而且::CoInitialize(NULL); 这句多余了
coolstar 2004-07-27
  • 打赏
  • 举报
回复
先谢谢各位大侠相助...回去试试看
天限天空 2004-07-27
  • 打赏
  • 举报
回复
__uuidof(Point),
ColderRain 2004-07-27
  • 打赏
  • 举报
回复
不好意思,看错了。

像这样创建试试:(去掉COM的初始化)
CComObject< CMPoint >* pPt = NULL;
CComObject< CMPoint >::CreateInstance( &pPt);
pPt->AddRef();
coolstar 2004-07-27
  • 打赏
  • 举报
回复
创建的代码?atl的还是asp的?

在asp中createobject的ProgID是对的
coolstar 2004-07-26
  • 打赏
  • 举报
回复
注册成功了


BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_Point, CMPoint)
END_OBJECT_MAP()

天限天空 2004-07-26
  • 打赏
  • 举报
回复
在注册表中找 CLSID_Point 的对应项
确定是否注册成功

查看 BEGIN_OBJECT_MAP 是否 有 CLSID_Point

一步一步更组件工厂的创建过程



abstract class 抽象类 accelerator 快捷键 accelerator mapping 快捷键映射 accelerator table 快捷键对应表 access modifier 访问修饰符 Access Pack 访问包 access specifier 访问说明符 access violation 访问冲突 accessibility 辅助功能 accessibility domain 可访问域 Accessibility Options 辅助功能选项 accessor 访问器 action 操作 Active Directory hierarchy Active Directory 层次结构 active document 活动文档 Active Document Containment 活动文档包容 active end 活动结尾 active object 活动对象 active point 活动点 Active Template Library 活动模板库 ActiveX Component ActiveX 组件 ActiveX Control ActiveX 控件 ActiveX control container ActiveX 控件容器 ActiveX Control Interface Wizard ActiveX 控件接口向导 ActiveX Control Test Container ActiveX 控件测试容器 ActiveX Designer ActiveX 设计器 ActiveX Document Migration Wizard ActiveX 文档移植向导 ActiveX-enabled 支持 ActiveX 的 Add key/ Multiply key/ Substract key/ Devide key 加号键/ 乘号键/ 减号键/ 除号键 Add-In 外接程序 Address Book 通讯簿 address space 地址空间 Administrator Mode 管理员模式 advise sink 通知接收 aggregate 聚合 Airbrush 喷枪 All Tables 所有表 allocation hook 分配挂钩 Alternate text "替换文字,备用文本" Always On Top 总在最前面 ambient 环境 ambiguous 不明确 ampersand “&”符 ampersand (&) “and”符 (&) anchor 锚定 (v.);定位点 (n.) animation control 动画控件 apartment-model threading 单元模型线程 application framework 应用程序框架 Application Wizard 应用程序向导 Apply Now 立即应用 apply to similar 应用到相似项 argument 参数 Arrange Tables 排列表 array initializer 数组初始值设定项 array rank 数组秩 arrow cap 箭头帽 ARROW key 箭头键 ArrowHourGlass 箭头沙漏 ArrowQuestion 箭头问号 article family 文章族 assembly 程序集;汇编 assembly manifest 程序集清单 assert 断言 assign 分配 associate 关联 asterisk (""*"") 星号(“*”) asynchronous moniker 异步名字对象 asynchronous peek operation 异步查看操作 ATL Object Wizard ATL 对象向导 atomic operation 原子操作 attached table 附加表 attribute 属性 Attributed Component Wizard 属性化组件向导 Attributed Programming 属性化编程 Attributes Property Attributes 属性 Authentication 身份验证 authorable 可创作(的) Auto completion for commands 自动完成命令 Auto Increment 自动增加 Auto Syntax Check 自动语法校验 Automatic 自动 automation 自动化 automation-enabled 启用自动化

3,248

社区成员

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

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