在VB6 IDE中工作时卸载COM控件

在VB6 IDE中工作时卸载COM控件,com,vb6,Com,Vb6,我日常工作的一部分是维护和扩展遗留的VB6应用程序。通用引擎是用C/C++编写的,VB6使用这些函数来提高性能 说到异步编程,C接口是不够的,我们依靠COM控件向VB6触发事件 我的问题是,当我在VB6中注册控件时,VB会将该控件加载到内存中,直到我退出VB6 IDE时才会卸载它。由于控件一直在加载,我无法在VC6中重新编译它,因为DLL文件已锁定 我找到的解决方案不是在VB中启用该控件,而是将CreateObject()与我的控件的全名一起使用。问题是,我必须将我的控件声明为对象,因为VB6对

我日常工作的一部分是维护和扩展遗留的VB6应用程序。通用引擎是用C/C++编写的,VB6使用这些函数来提高性能

说到异步编程,C接口是不够的,我们依靠COM控件向VB6触发事件

我的问题是,当我在VB6中注册控件时,VB会将该控件加载到内存中,直到我退出VB6 IDE时才会卸载它。由于控件一直在加载,我无法在VC6中重新编译它,因为DLL文件已锁定

我找到的解决方案不是在VB中启用该控件,而是将
CreateObject()
与我的控件的全名一起使用。问题是,我必须将我的控件声明为对象,因为VB6对我正在使用的接口一无所知,而且我无法访问IntelliSense,这是一个难题


你知道如何在退出应用程序后或直接在IDE中告诉VB6卸载控件吗?

我很确定没有好的方法强制VB6卸载控件

我就是这么做的。。。在VC下运行VB6,而不是并行运行Visual C和Visual Basic:

  • 加载VC
  • 打开包含COM对象的项目
  • 编辑、更改等
  • 在VC中,使用适当的命令行参数将输出可执行文件设置为VB6.EXE以加载VB6工作区
  • 现在只需点击F5启动VB6 IDE并加载VB6项目
  • 如果要再次更改COM代码,请退出VB6.EXE,进行更改,然后再次按F5。只要保存工作区,VB6就会记住打开的窗口和所有项目设置
  • 这种方法的优点:

    • 您可以在COM对象中设置断点,并使用完整源代码调试器对其进行调试
    • 您可以愉快地在C和VB中同时调试
    • 每当VB6运行时,它总是具有最新版本的COM DLL

    这很聪明,我会尽力做到的。现在我想知道我以前的基于cookie的帐户是否可以与我新的基于OpenId的帐户合并,这样我就可以将这个答案标记为答案……这也适用于VB以外的其他IDE。我已经用Delphi/VB6成功地完成了这项工作。