gpt4 book ai didi

vb6 - 如何以编程方式更新 vb6 项目中的 OCX 引用?

转载 作者:行者123 更新时间:2023-12-05 00:43:56 25 4
gpt4 key购买 nike

我会定期破坏二进制兼容性,并且需要重新编译由数十个 ActiveX DLL 和 OCX 组成的整个 vb6 应用程序。我已经编写了一个脚本来自动化这个过程,但是我遇到了一个问题。

当使用项目兼容性重新编译 OCX 时,其版本会增加,并且引用 OCX 的项目将不会重新编译,直到它们的引用更新到新版本。这个是在项目正常打开的时候自动勾选的,提示用户更新引用,但是我需要用脚本来做。

我该怎么做?

最佳答案

我的项目维护了十多年,由两打 ActiveX DLL 和六个控件的层次结构组成。也用脚本系统编译。

我不建议做你正在做的事情。

我们的做法如下

  • 进行我们的更改,包括添加
    并在IDE中进行测试。
  • 我们从底层编译
    层次结构到顶部
  • 我们将新编译的文件复制到
    例如一个修订目录
    601,然后是 602 等等
  • 我们创建 setup.exe
  • 设置完成后,我们复制
    通过修订目录进入我们的
    兼容性主管。请注意我们
    永远不要指向编译的二进制文件
    在项目目录中。一直到
    包含所有内容的兼容性目录
    DLL。

  • 这样做的原因是,如果您使用 OLE View 工具查看 IDL 源代码,您会发现任何引用的控件或 dll 都通过 #include 添加到界面中。如果您指向项目目录中的二进制文件,那么包含会从注册表中提取,这可能会导致很多奇怪和兼容性。

    但是,如果引用的 DLL 存在于二进制存在的目录中,同时用于二进制兼容性,VB6 将使用它而不是注册表中的任何内容。

    现在有一个问题,您将很少遇到。考虑这个层次结构
  • MyUtilityDLL
  • MyObjectDLL
  • MyUIDLL
  • MyEXE

  • 如果您向 MyUtilityDLL 中的类添加属性或方法,如果幸运的话,MyUIDLL 可能无法编译并给出二进制不兼容错误或类似 [inref] 的奇怪错误。无论如何,解决方案是编译 MyUtilityDLL,然后立即将 MyUtilityDLL 复制到兼容目录中。然后其余的自动编译将正常工作。

    您可能希望在自动构建中包含此步骤。

    请注意,在许多情况下,项目将在 IDE 中正常工作。如果您现在意识到这一点,您可能会拔掉头发。

    关于vb6 - 如何以编程方式更新 vb6 项目中的 OCX 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/620535/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com