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

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

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

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

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

任何想法如何告诉VB6退出应用程序或直接在IDE中卸载控件?

0
额外 编辑
意见: 2

3 答案

大多数情况下,它与其他答案所述的更新图形是相同的游戏,但实际上存在一些明显的差异。

原始游戏在HD版本中没有的几个点上有一些反重力效果。


这两场比赛之间也存在着微小的秘密差异。我为Serious Sam编写了一个秘密常见问题解答,当它更新为Serious Sam HD时,我发现了一些我将在下面列出的更改:

    在沙峡谷层面上,游戏引擎的变化使得它变得非常多 更容易运行到过去需要一些秘密的两个秘密 棘手的跳跃。如此以至于如果你不知道游戏的历史, 你可能会想知道为什么自从他们进入后他们算作“秘密”了 一目了然。
  • 在沙丘级别还有一个额外的秘密。

  • 在最后一级,大金字塔,原始游戏没有 秘密。 HD版本在这个级别有3个秘密。

3
额外

From http://en.wikipedia.org/wiki/Serious_Sam#Serious_Sam_HD:_The_First_Encounter

这款游戏是一部严肃的山姆:   第一次遇到改进   纹理和人物模型。它   零售价为1200微软积分或   15美元(PC版也是15美元)   并支持16人在线合作社   (XBLA版本的4人)。这个   重拍功能成就。[5] [6]   死亡竞赛和专用服务器   最近增加了支持。

我实际上购买了两个HD版本,因为我没有拥有以前的版本,但是在朋友们玩过。

KR,

2
额外
@Syne还有基于Steam的(=改进的)配对。
额外 作者 Jax,
所以它只是更好的纹理,否则游戏和关卡是一样的?
额外 作者 Synetech,
呵呵;什么配对?在前两场SS比赛中,我不记得任何称为配对的事情。
额外 作者 Synetech,

我很确定没有好的方法来强制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
0
额外
这非常聪明,我会尽力做到这一点。现在我想知道我的旧的基于cookie的帐户是否可以与我的新的基于OpenId的帐户合并,以便我可以将此答案标记为答案...
额外 作者 Vincent Robert,
这也适用于VB以外的其他IDE。我已经用Delphi / VB6成功完成了这个任务。
额外 作者 Daniel Rikowski,