代码之家  ›  专栏  ›  技术社区  ›  Vincent Robert

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

  •  35
  • Vincent Robert  · 技术社区  · 16 年前

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

    当涉及到异步编程时,C接口是不够的,我们依靠COM控件将事件触发到VB6。

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

    我找到的解决方案不是在VB中启用控件,而是使用 CreateObject() 以我控制的全名。问题是我必须将控件声明为对象,因为vb6对我使用的接口一无所知,而且我无法访问intellisense,这是一种痛苦。

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

    1 回复  |  直到 7 年前
        1
  •  28
  •   Insane Skull    9 年前

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

    这就是我要做的……不要并排运行Visual C和Visual Basic,而是运行vb6 在下面 VC:

    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