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

Vincent Robert 35 vb6 com

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

在异步编程方面,C接口是不够的,我们依靠COM控件将事件激发到VB6.

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

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

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

Joel Spolsky.. 28

我很确定没有好办法强制VB6卸载控件.

这是我做的...而不是并排运行Visual C和Visual Basic, VC 运行VB6 :

  1. 加载VC
  2. 打开包含COM对象的项目
  3. 编辑,更改等
  4. 在VC中,使用适当的命令行参数将Output Executable设置为VB6.EXE以加载VB6工作空间
  5. 现在只需按F5启动VB6 IDE并加载VB6项目
  6. 如果要再次更改COM代码,请退出VB6.EXE,进行更改,然后再次按F5.只要您保存工作区,VB6就会记住您打开的窗口和所有项目设置.

这种方法的优点:

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

  • 这也适用于除VB之外的其他IDE.我用Delphi/VB6成功完成了这个. (2认同)