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

标签 com vb6

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

当谈到异步编程时,C 接口(interface)是不够的,我们依靠 COM 控件来向 VB6 触发事件。

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

我发现的解决方案是不在 VB 中启用该控件,而是使用带有控件全名的 CreateObject()。那么问题是我必须将我的控件声明为对象,因为 VB6 对我正在使用的接口(interface)一无所知,而且我无法访问 IntelliSense,这很痛苦。

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

最佳答案

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

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

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

这种方法的优点:

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

关于com - 在 VB6 IDE 中工作时卸载 COM 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/419/

相关文章:

c++ - com 如何提供与语言无关的数据类型

C# 设计选择——COM 对象还是另一个类?

process - 如何在 Visual Basic (VB6) 中延迟代码执行?

vb6 - 更改 DTPicker 上的一周开始日

vb6 - 在无边框表单上有一个弹出菜单

c++ - 如何解密 MAPI IMessage

c# - 使 COM 互操作事件从界面可见

windows - 是什么决定 RegisterTypeLib 是写入 win32 还是 win64?

ms-access - 如何检查 Access 数据库中是否存在表?

vb6 - 当组件服务尝试打印时没有打印机显示