VB6更新/重新加载项目中使用的CTL用户控件

VB6更新/重新加载项目中使用的CTL用户控件,vb6,user-controls,ctl,Vb6,User Controls,Ctl,我有一个使用CTL用户控件的旧VB6项目。 我可以在工具箱上看到用户控件 如果我在项目中创建了一个新表单,并尝试添加用户控件,它将失败,因为“加载DLL时出错”,无法添加控件 但是如果我创建了一个新项目,我可以将用户控件添加到项目中,然后以新的形式使用它,而不会出现问题 在第一个项目中,我不能以用户控件的形式使用它,这有什么错 同样,如果打开已使用用户控件的项目表单,则无法识别该控件。 似乎与原始项目上的用户控件的错误路径/引用有关 我尝试再次添加用户控件,但它告诉我已经存在一个同名的用户控件

我有一个使用CTL用户控件的旧VB6项目。 我可以在工具箱上看到用户控件

如果我在项目中创建了一个新表单,并尝试添加用户控件,它将失败,因为“加载DLL时出错”,无法添加控件

但是如果我创建了一个新项目,我可以将用户控件添加到项目中,然后以新的形式使用它,而不会出现问题

在第一个项目中,我不能以用户控件的形式使用它,这有什么错

同样,如果打开已使用用户控件的项目表单,则无法识别该控件。 似乎与原始项目上的用户控件的错误路径/引用有关

我尝试再次添加用户控件,但它告诉我已经存在一个同名的用户控件

如果我试图退出用户控件以再次加载它,我将无法退出它,因为它正在项目中使用。我能做什么


谢谢您的帮助。

在文本编辑器中打开CTL文件(记事本就可以了)

顶部可能有类似于以下内容的线条:

VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFlxGrd.ocx"
可能有一个或多个
Object=


可能至少有一个引用这些行的文件丢失或未在计算机上注册。

不要问我为什么,但成功的唯一方法是从头开始。 我从一台安装了Visual Studio SP6的干净的Windows XP笔记本电脑开始

尝试加载和编译项目时,出现了相同的错误。 如果我试图绘制我的用户控件的新实例,也是一样的:加载DLL时出错 如果我试图打开一个包含我的用户控件实例的表单,情况也是一样的:该控件在表单中无法识别(空白区域)

因此,我启动了一个新的空ActiveX DLL项目。 逐步添加所有对象,我可以加载所有对象(有一些小问题),但最终我可以编译项目

添加对象的顺序很重要:引用和组件、用户控件、模块和类、设计器,最后是表单

我试图在每个步骤上进行编译,以找出问题的原因,并了解下一个必须添加的对象。 但我不明白为什么现在能用。 无论如何谢谢你

编辑2018-11-07:

我在最初的项目中发现了一个变通方法,可以毫无问题地使用CTL用户控件,并且可以编译项目而不显示任何错误消息。我想在这里分享它,以帮助任何有类似问题的人

我不知道为什么,也许任何人都可以给出解释,但如果我打开项目,然后打开名为frmDate的设计器(见图),从那一刻起,我就可以编译项目,并在任何形式上使用用户控件。 发生了什么事


项目可能缺少引用。CTL中是否有引用其他DLL中类的代码?这可以通过CreateObject调用实现,例如.DavelnCaz-非常感谢您的回答。我已搜索对象,但在CTL文件中未找到任何对象行。我发现这两行代码:Private Declare函数SetCapture Lib“user32”(ByVal hwnd As Long)和| Private Declare函数ReleaseCapture Lib“user32”()一样长。但是没有对象行。提供更多信息,我的CTL文件从以下行开始:VERSION 5.00 Begin VB.UserControl XButton我在CTL代码中找不到任何“OCX”。声明函数可能会导致这样的错误-但在工作的计算机中不能缺少user32.dll,因此这似乎不太可能。