VB6:名称与现有模块,项目或对象库冲突

时间:2014-11-10 02:41:12

标签: reference vb6 conflicting-libraries

阅读:我正在为将来遇到此错误的人提供问题和答案。


打开VB6项目,我收到如下错误:

  

加载过程中的错误。请参阅xyz.LOG

我打开日志文件并看到这些错误:

  

第42行:类Threed.S控制XYZ的控件不是加载控件   类。

在这种情况下,我可以看到问题是由Sheridan 3D控件引起的:C:\ WINDOWS \ system32 \ THREED32.OCX

我认为该项目缺少一个组件,因此,VB6>项目>组件>勾选Sheridan 3D Controls并得到此错误:

  

---------------------- Microsoft Visual Basic ---------------------- -----
  名称与现有模块,项目或对象库冲突
  ---------------------------确定帮助--------------------- ------

3 个答案:

答案 0 :(得分:3)

解决此问题的方法是启动一个新的VB6项目>项目菜单组件>勾选在受影响的项目中选择的组件,直到出现错误。

  

---------------------- Microsoft Visual Basic ---------------------- -----
  名称与现有模块,项目或对象库冲突
  ---------------------------确定帮助--------------------- ------

您需要将其缩小到两个相互冲突的OCX。

就我而言,我将其缩小为Sheridan 3D Controls / THREED32.OCX和Outrider Spin Control / SPIN32.ocx

要解决此问题,我使用RegSvr32取消注册OCX - 确保使用/ u标志注册。

REGSVR32 "C:\WINDOWS\system32\THREED32.OCX" /u   

然后我将OCX复制到项目文件夹并使用以下方法重新注册:

REGSVR32 "C:\Dev\Project\THREED32.OCX"

然后在项目中出现问题>项目菜单组件>选择列表框Sheridan 3D控件/ THREED32.ocx中的项目(您无法在不收到错误的情况下打勾或取消选中正在使用的冲突的一个)>单击“浏览”并从项目文件夹中引用它,而不是C:\ WINDOWS \ system32 \


另一个技巧是关闭项目并取消注册受影响的ocx - 确保使用/ u标志注册它,例如

RegSvr32 "c:\Windows\system32\mscomctl.ocx" /u   

然后打开项目>组件>你应该看到" Microsoft Windows Common Controls 6.0(SP6)"在C中使用OCX文件:... \ Microsoft Vi .. \ VB98 \ mscomctl.ocx"而不是c:\ Windows \ system32 \ mscomctl.ocx。

然后加载项目时不会出现这些错误:

Errors during load. Refer to xyz.LOG

答案 1 :(得分:3)

我会给你最好的方法摆脱这个问题。我遇到过很多方面,但这是最好的处理方式..

关闭项目。右键单击vb项目并使用记事本打开(不使用vb​​)。此项目文件仅包含项目中使用的所有表单和模块的引用,库和信息。

现在只需删除冲突的模块或组件文件,就会出现问题,只需删除整行即可。保存并关闭它 现在打开项目并添加组件。我发誓你不会得到那个错误。

谢谢。享受

答案 2 :(得分:0)

尝试从引用中取消选中最新的对象库/引用,然后再次进行检查,然后找到所需的引用(vb6有一些错误,可以通过反向过程来解决)。我解决了使用此过程提到的错误。