CoCreateInstance of OLE control {83489345-D20C-4059-A1DB-0BCC2D912F77} failed.
>>> Result code: 0x80040154
>>> Is the control is properly registered?
就是这么个问题,浪费了我好久的时间,期间系统重装了几遍,环境也重新配置了几遍,然而并没有什么卵用,问题就在那,不离不弃。今天在一个人的帮助下,又重新研究起了这个问题(因为我们这个项目是第三次开发,并且之前开发的开发人员还不是我们公司,所以项目里的好多东西都不知道是干什么的)。我们这个项目组中就有一个人的代码编译后是能够正常运行的,然而我们的源代码又是同一套,所以绝对不会是源代码的问题,至于环境,我们也配置了几遍,所以是它的可能性非常小,所以我们同时编译运行两套源代码,发现执行到这个问题模块时,我们的电脑都会出现上面那个问题,然而他的很正常,并没有出现这个问题,同时还有一个奇怪的现象,他的输出中在加载了这个问题模块的dll文件后,突然加载了F盘下的某个ocx文件,而我们的项目并不在F盘上,所以考虑是不是这个ocx文件导致了这个问题,我将这个ocx文件拷贝到我的电脑上并注册,然而,失败了,上网搜了搜注册失败的解决办法,成功了,最后,程序正常运行,bug已经解决掉了。
提示:既然是要注册的ocx文件,所以要将这个文件放到不经常更改路径的地方,同时也需要放置被不小心删除掉,所以建议将要注册的dll或者是ocx文件放置到C盘目录下。
总结:对于组件注册的问题,很大程度上并不一定是当前dll文件出现的问题,应该继续跟踪,看看这个dll是否又加载了别的dll或者ocx。注册时,应该注意权限的问题,之前注册失败就是因为权限的问题(Windows7下对权限管理还是很严格的),所以尽量不要用regsvr32 + 路径 这种在运行中注册的办法 最好是以管理员权限运行cmd,在cmd中执行命令进行注册。