COM组件DLL引用时出现检索组件错误

前情提要:

  市面上有一套系统软件,其中某个功能的程序是使用COM组件开发的,我希望使用它的这个功能,所有我引用了他的COM组件DLL.

但是程序执行时出现了一个错误,错误如下图:

 

 

这个错误一般都是我们引用的COM组件没有注册引起的。但是当我使用regedit命令去注册组件时,总是无法注册报了一个错误

 

 

使用regsvr32.dll注册时出现这个问题。

我把这个程序拿到另一台电脑上使用时,没有报错,能够正常的运行,那台点脑安装了原版的程序。所以没有报这个错误。

因为单独注册dll没有成功,我只能采用这种安装原版程序的方式来使我的程序可以正常执行使用。

但是当我在我电脑上安装dll原版程序来完成组件注册的任务时,我运行程序时还是无法正常执行。

各中找原因

1.查找注册COM组件dll的方法,但是都无法进行注册。

2.安装原版程序,卸了装装了卸就是不行。

3.使用错误信息中的Guid在注册表中进行查找,发现能正常使用的电脑上的注册文件和不能使用的组测文件是同一个组测文件相同的。

在我快崩溃了的时候,在某个地方突然发现32位和64位程序使用。然后我查看一下我的程序,发现是x64的程序,不是x86也不是any CPU。我将程序属性设置位x86编译,再次运行时发现

程序可以正常使用了。

这里小伙伴们可能有疑问,那台可以使用的电脑上的程序不也是64位的,其实不是的,可以正常使用的电脑上的程序时any CPU编译的,后台我再自己机器上尝试解决问题时,将程序改为x64了。

所以当我在自己机器上注册好组件时,我的程序不满足32位的要求。

程序正常使用要满足两个条件:

1.通过安装原版程序进行dll组件注册

2.程序要能兼容32位(因为这个dll组件时32位的)虽然系统是64位的,但是我引用的dll要求32位。

 

posted on 2018-09-21 16:26  牛博客  阅读(987)  评论(0编辑  收藏  举报