在 VB6 IDE 中工作时卸载 COM 控件
Posted
技术标签:
【中文标题】在 VB6 IDE 中工作时卸载 COM 控件【英文标题】:Unload a COM control when working in VB6 IDE 【发布时间】:2010-09-05 06:02:25 【问题描述】:我日常工作的一部分是维护和扩展旧版 VB6 应用程序。通用引擎是用 C/C++ 编写的,VB6 使用这些函数来提高性能。
对于异步编程,C 接口是不够的,我们依靠 COM 控件向 VB6 触发事件。
我的问题是,当我在 VB6 中注册该控件时,VB 将该控件加载到内存中,并且在我退出 VB6 IDE 之前不会卸载它。由于控件一直在加载,我无法在VC6中重新编译它,因为DLL文件被锁定了。
我发现的一个解决方案是不在 VB 中启用该控件,而是使用带有我的控件全名的CreateObject()
。那么问题是我必须将我的控件声明为一个对象,因为 VB6 对我正在使用的接口一无所知,而且我无法访问 IntelliSense,这很痛苦。
知道如何告诉 VB6 在退出应用程序后或直接在 IDE 中卸载控件吗?
【问题讨论】:
【参考方案1】:我很确定没有强制 VB6 卸载控件的好方法。
这就是我要做的...而不是并行运行 Visual C 和 Visual Basic,而是在 VC 下运行 VB6:
-
加载 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 成功地做到了。以上是关于在 VB6 IDE 中工作时卸载 COM 控件的主要内容,如果未能解决你的问题,请参考以下文章
当 URL 在浏览器中工作时,啥可能导致“连接 ETIMEDOUT”错误?
在 MVC 结构中工作时,DAO 是不是与 Model 相同? [复制]
谷歌地理编码 api 在 Apache Cordova 中的 Ripple 系统中工作时无法在 Android 手机中工作