【问题标题】:How to automate adding DLL references in a vb6 exe project?如何在 vb6 exe 项目中自动添加 DLL 引用?
【发布时间】:2022-07-25 19:53:45
【问题描述】:

我有一个调用 vb6 DLL 的 vb6 exe 项目。这两个都是我写的。每次我在做一些更改后编译 vb6 DLL。我必须打开 exe 项目,重新选择已编译的 DLL,然后才能运行/编译 exe。我怎样才能自动化上述过程?我尝试编辑 vbp 文件,将相应的 DLL 行替换为已编译 DLL 的 GUID,但没有成功(可能是我的 GUID 错误)。实际上,我在 exe 项目中有 10 多个 DLL,一些 DLL 甚至引用了另一个 DLL....所以任何脚本或方法可以使该过程自动化?谢谢。

  • 如果您重新编译配置了二进制兼容性的 DLL(到注册 DLL 的路径中),它将无缝工作,请参阅techrepublic.com/article/…
  • 如果您创建一个项目组并添加两个(或多个)VBP,您还可以将 DLL 项目添加到 EXE 项目并将它们作为一个整体进行调试。
  • 嗨,Alex,我知道使用“二进制兼容性”编译 DLL 可以避免每次都重新编译 EXE。但是我不喜欢这样做,因为如果我在现有的类方法中更改了某些内容,例如添加了一个新的非可选参数,但忘记更改 exe 中相应的函数调用代码,这是非常危险的.在开始运行程序的过程中,它不会提示任何错误信息提醒我,直到运行到该行代码。无论如何,这篇文章确实有助于我了解更多COM操作的细节。谢谢

标签: dll com vb6


【解决方案1】:

使用项目兼容性而不是二进制兼容性。如果没有其他人使用您的 DLL,您不一定需要二进制兼容性。

来自 msdn

什么时候应该使用版本兼容性?

...

项目兼容性:每次编译组件时,类型 保留库标识符,以便您的测试项目可以维护 他们对组件项目的引用。来自的所有类 ID 维护以前的版本;接口 ID 仅更改为 不再与之前的二进制兼容的类 同行。

(不确定原始 MSDN 页面是什么,但我找到了它的副本 here。)

如果您真的想检查已编译的 DLL 以查看文章引用的所有这些 ID,请运行 OLEView 并绑定到您的 DLL 的类型库。它将“反编译”DLL 的类型库,您可以在其中看到这些详细信息。如果你重新编译它然后比较 typelib 文本,你会看到它是如何改变的。

【讨论】:

  • 谢谢你的评论。我同意你的观点,“二进制兼容性”不是必需的。但是您知道如何自动化 .vbp 中的 DLL 引用吗?而不是手动一一选择DLL文件?
  • 为什么引用会改变?它们应该保留在保存的 VBP 中
  • 因为我没有使用“二进制兼容性”来编译 DLL,所以这些 DLL 的 GUID 将被更改。例如,下面是我的 VBP 'Reference=*\G{544395AB-041E-43C5-B3FA-A60775C9E308}#1.0#0#\\FILESERVER\Production\COM\FTSTUP\Master\FTSTUP.dll#FTSTUP'中的一行"*\G{?????}#..." 中的 GUID 将被更改。我必须在 VB6 IDE 中为每个 DLL 手动选择 DLL 文件。现在,我想生成 VBP 文件,这样我就不需要每次都手动进行。但我不知道如何获取最新的 GUID,尝试了一些方法但似乎失败了。有什么建议吗?
  • 如果您使用项目或二进制文件,那么这些 GUID 不应更改。你试过吗?
  • 我不想使用“二进制兼容性”,因为我认为如果我更改了 DLL 中的函数接口(例如添加了一个新参数),它在运行到该行代码之前不会提示错误是很危险的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2011-12-19
  • 2011-11-22
  • 2012-10-11
相关资源
最近更新 更多