提示“没有注册类”,求帮助

剑啸六合 2018-01-03 02:58:38
1.XRAYWorXBaseCOM::ITubeLoaderCOMPtr loader = NULL;
HRESULT hr = loader.CreateInstance(__uuidof(TubeLoaderCOM));
hr返回没有注册类
2.根据tlb文件中的TubeLoaderCOM定义
struct __declspec(uuid("46d84795-d783-4357-93d7-a86590e6dc40"))
TubeLoaderCOM;
在注册表中找到了该项,说明已经注册 如下图

3.使用regasm.exe注册,注册部分脚本代码如下
IF EXIST "%WINDIR%\Microsoft.NET\Framework64" GOTO x64
path="%WINDIR%\Microsoft.NET\Framework\v2.0.50727\"
echo %path%
GOTO endSetPath
echo GOX64
:x64
path="%WINDIR%\Microsoft.NET\Framework64\v2.0.50727\"
echo %path%
echo X64-F4.0
:endSetPath
regasm.exe "E:\workspace\300kv\Xray300kVQt\Xray300kVQt\ConnectionSampleCOM\XRAYWorXBase.dll" /tlb /codebase
echo.
regasm.exe "E:\workspace\300kv\Xray300kVQt\Xray300kVQt\ConnectionSampleCOM\XRAYWorXBaseCOM.dll" /tlb /codebase
pause
4.注册后的命令行显示


5.使用regsvr32.exe,注册后会提示找不到入口,貌似只能用regasm.exe
...全文
6477 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
剑啸六合 2018-01-08
  • 打赏
  • 举报
回复
引用 13 楼 hrtem 的回复:
先在32位下试试吧。是做x射线成像的吗?
是的
hrtem 2018-01-06
  • 打赏
  • 举报
回复
先在32位下试试吧。是做x射线成像的吗?
剑啸六合 2018-01-05
  • 打赏
  • 举报
回复
引用 11 楼 xuddk727 的回复:
改成x86编译,如果你要64位的改x64,
可是我没办法获取COM组件源码,怎样让程序与之匹配呢?
许文君 2018-01-04
  • 打赏
  • 举报
回复
regsvr32是给C++的用的,你这个COM dll编译的时候平台选项是什么?x86? x64? anycpu?
赵4老师 2018-01-04
  • 打赏
  • 举报
回复
同理,regasm.exe也分32位和64位。
剑啸六合 2018-01-04
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
在64位Windows下:
64位exe和dll在目录c:\windows\system32目录下;
32位exe和dll在目录c:\windows\syswow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html
64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html

我按照上述方法又试了一下,用regsvr32注册的话会报错,如下图

用regasm.exe注册则正常,注册后位置在计算机HKEY_CLASSES_ROOT\CLSID\{46D84795-D783-4357-93D7-A86590E6DC40}
仍不知是什么原因显示没有注册类
许文君 2018-01-04
  • 打赏
  • 举报
回复
改成x86编译,如果你要64位的改x64,
剑啸六合 2018-01-04
  • 打赏
  • 举报
回复
引用 8 楼 xuddk727 的回复:
regsvr32是给C++的用的,你这个COM dll编译的时候平台选项是什么?x86? x64? anycpu?
应该是anycpu吧,通过我这个注册表中的内容,应该是注册成功了吧?
赵4老师 2018-01-03
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
剑啸六合 2018-01-03
  • 打赏
  • 举报
回复
引用 4 楼 xuddk727 的回复:
1.理不清思绪可以这么做,找个低版本的比如vs08 vs05等,在win7 32下去编译,因为这些IDE C++默认输出32的。c#改anycpu为x86,
2.尽量C++去写COM组件,让C#调用,c#写的C#去调用,避免C#写,C++调用,


嗯 先谢谢版主,刚才我用ole-viewer看了一下用到的COM组件,没看明白,也不知道是不是32位的,如下图

另外我的framework装了好几个版本,用哪个版本的regasm.exe注册不影响吧?
我当前情况是这样的,交付的程序给了两版,一版是C#的,另一版是MFC的调用,我现在win10+VS2015的环境下想将这个MFC的程序继续改写,C#的用不到。不能保证以后程序一定是32位的,也想兼容。
许文君 2018-01-03
  • 打赏
  • 举报
回复
1.理不清思绪可以这么做,找个低版本的比如vs08 vs05等,在win7 32下去编译,因为这些IDE C++默认输出32的。c#改anycpu为x86, 2.尽量C++去写COM组件,让C#调用,c#写的C#去调用,避免C#写,C++调用,
许文君 2018-01-03
  • 打赏
  • 举报
回复
OLE-COM Object Viewer能看。 环境只是一方面,IDE输出exe时同样需要设置平台一致。 regsvr32是有32位64位之分的,regasm可能只是根据你输出的dll来的,不过我不确定,你可以自己试下。 C#写的还是让c#去调用为好。
剑啸六合 2018-01-03
  • 打赏
  • 举报
回复
引用 1 楼 xuddk727 的回复:
32位64位老问题,其中必有一方是64位另一方为32位
请问版主,1.我怎样确定当前COM组件是多少位的? 2.之前我也觉得是这个问题,可是我把程序在32位和64位的环境下都编译了下,调用发现还是没有注册类? 3.是不是COM组件,regasm.exe,程序 三者,必须都同时为32位或者64位?
许文君 2018-01-03
  • 打赏
  • 举报
回复
32位64位老问题,其中必有一方是64位另一方为32位
开发背景随着时代的进步和科技的发展,计算机网络的发展日新月异,深刻的影响着我们的生活,受疫情的影响,为了方便教师和学生打印文件以及取文件,节约学生和老师等待时间,节约打印店的打印成本,提高打印店的打印效率,开发一款在线的打印系统是十分有必要的,校园在线打印预约系统把上传文件、选择打印店、打印支付、打印完成取文件以及管理功能集成一身,各管理人员分工合作、相互配合,及时完成打印任务。也方便打印店打印更方便更节约成本的打印文件以及节约学生的空闲时间。现阶段学校的打印文件模式都是传统的打印方式:学生需要跑到打印店拿QQ,微信,U盘给打印店的电脑上传文件,在等待别人打印完成后才能让打印店管理员打印文件,打印店管理员需要一个一个选择文件打印,在打印高峰期间,管理员打印文件忙不过来,不能给同学良好的打印服务,所以传统的打印文件方式不满足与当前社会的发展趋势。 开发目的利用现代计算机相关技术来进行在线打印预约,以减轻打印店工作人员的工作负担以及提高工作效率,减少学生打印等待时间。学生只需要上传需要打印的文件,然后选择打印店,选择支付以及去打印文件大概时间就可以,而打印店管理员只需要接收学生发的文件,以及打印,把打印的文件整理即可,可以根据学生取文件的时间自己编排打印文件的顺序,更好的利用时间,提高打印文件效率。 项目简介该项目是基于SpringBoot+SSM校园在线打印预约系统,包含两个角色:一个是用户模块,一个是打印店管理员模块。用户模块下面有个人中心模块,店铺选择模块,资料分享模块,资料分享模块,交易记录模块,使用帮助模块。在打印店管理员模块下有点单管理模块,店铺管理模块,价格管理模块。 项目运行截图下面从登录页面、用户界面和打印店管理页面三个部位来叙述全部系统。用户、商店和管理员都必须登录才可以浏览在线管理系统系统。管理员可以管理方法商店,但管理员可以是商店。用户登录输入校园在线打印预约系统的网址后,电脑浏览器将进到校园在线打印预约系统。会先进到系统的主页。用户可以先浏览系统首页,随后登录。用户注册如果登录者尚未注册,您需要注册一个帐户。单击右侧的注册按钮,将显示注册页面。用户需要填写用户名、电话号码、登录密码等信息。输入手机号码后,点击发送验证码,验证码就会发送到手机上。填写完毕后,点击注册按钮。添加后会跳转到登录页面。注册界面如图 短信验证码发送成功后,在线预约打印系统会弹出提示,此时用户的手机就会收到短信验证码。短信验证码发送成功界面如图进行账号注册。用户收到短信验证码如图 用户登录后的首页店铺详情个人中心      积分记录我的文件  文件共享管理员登录订单信息  订单详情店铺信息  价格设置 项目论文      

3,245

社区成员

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

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