一个dll中包含多个com组件,为何不会自动注册多个组件? 一个dll中包含多个com组件,为何不会自动注册多个组件,只会注册其中的1个? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不对吧,我写过一个dll含多个的,使用regsvr32注册都能注册成功. akirya :用regsvr32注册是没问题,我的意思是在开发环境下无法自动注册。 在开发环境下,得修改那个rgs文件吧。 开发环境也是使用regsvr32注册的. 检查一下你的项目文件,类型库有一个rgs文件,每个组件也都对应一个rgs文件,都是注册信息。你的问题是开发环境不能注册成功?你用的vista吗?如果是,你需要以管理员身份运行vs才能注册成功。 我用的是win2000, 也有2个rgs文件 用别人写的包含多个com的DLL试试能不能注册,能的话就是你写的有问题,不能的话就看看环境有没有问题 看看rgs文件和资源头文件,看看是否有你要注册的组件 每个COM都会注册 楼主是怎么用的com COM的注册函数有问题!看COM的本质你就可以找到答案了!每个COM组件都得注册才能用COM的客户端运行环境是根据CLSID去注册表查找COM组件的DLL的路径然后看系统是否已经加载在内存中,如果没有则加载该DLL然后创建组件的类厂,返回类厂指针,在客户端的CoCreateInstance函数内部使用给类厂指针创建你需要的COM组件,并将你所需要的接口返回如果是进程外的COM的话,那又是另外一种情形了建议你看下这个 COM 技术内幕——微软组件对象模型 用atl生成多个com组件时,会同时对应生成多个.rgs(注册表修改)文件,每一个com组件都对应着一个CLSID,也就是说每一个rgs文件向注册表中注册一个com组件,根据com组件的不同功能注册不同信息。所以,你自动生成的rgs文件需要手动修改,这样,最后atl工程生成的dll文件用regsvr32注册才有效。(用atl自动生成dll时,已经向系统注册了,只有将这个dll移植到其他电脑,才需要用regsvr32再次注册) 在GUI程序下,Printf标准输出的那里去了,如何截获 读取视频文件播放时间的问题 问一个简单的问题,如何把自己需要的类型的数据转换为字符串数组! 请教一个用CFile读取文件遇到的问题 可以解析一下以下程序吗?希望可以详细点,谢谢 如何在windows中注册一个新的文件类型? 那里有这种图片下载地址?100 分 怎样使vc6中的float与IEEE754标准中的float类型相互转换? (提问+放分)写了一个勾函数的东西,做成dll能勾住,写成类却不行,为什么呀? 关于XP风格 MFC中CThreadLocal 类的运算符重载问题 目录改变,如何注册改变的ocx
都能注册成功.
用regsvr32注册是没问题,我的意思是在开发环境下无法自动注册。
看COM的本质你就可以找到答案了!
每个COM组件都得注册才能用COM的客户端运行环境是根据CLSID去注册表查找COM组件的DLL的路径
然后看系统是否已经加载在内存中,如果没有则加载该DLL
然后创建组件的类厂,返回类厂指针,在客户端的CoCreateInstance函数内部
使用给类厂指针创建你需要的COM组件,并将你所需要的接口返回如果是进程外的COM的话,那又是另外一种情形了建议你看下这个 COM 技术内幕——微软组件对象模型