gpt4 book ai didi

delphi - 替换Delphi XE3中的RIDL文件和typelib

转载 作者:行者123 更新时间:2023-12-03 15:48:19 25 4
gpt4 key购买 nike

我编写了一个测试项目,它公开了 COM 工厂和对象。经过测试并发现我们的实现正在运行 - 我现在想将代码+类型库移至我们的主项目中。我将 RIDL + TLB 文件复制到主项目文件夹中。我相应地重命名了这两个文件(主项目名称)。我还删除了项目资源文件,以防 Delphi 将 TLB 数据放在这里。当然,我删除了旧的 TLB 和 RIDL 文件(我还删除了所有 DCU 文件,以防万一)。最后,我将 RIDL 文件添加到主项目中并进行编译。

RIDL 文件在编译期间被 Delphi 拾取,它按预期生成 TLB 文件,但不知何故它没有将 TLB 数据注入(inject)到 exefile 中。因此,当我启动应用程序时,我只是收到一条错误消息“无法加载类型库”。在我的代码中,我在启动时自动创建 COM 工厂并更新 Windows 注册表。关闭时会发生相反的情况。

摆弄类型库编辑器几个小时,尝试从 Delphi 和 shell/regsvr32 注册 typelibrary/exe,delphi 出于某种神奇的原因拾取了新文件,一切都按预期工作。

问题是,我不知道“为什么”它一开始不起作用,也不知道为什么在尝试不同组合几个小时后它起作用。所以我无法重现成功。当更新我们的代码库时,我必须在另一台计算机/修订版上执行相同的操作 - 但这次它拒绝工作。

如何强制 Delphi 注入(inject)类型库?是否有一些“技巧”(除了像刷新 RIDL 这样明显的技巧,它可以正确生成单元,但对 TLB 资源问题没有任何作用)。

最佳答案

据我了解,步骤如下:

  1. 将 .ridl 文件添加到项目中。这将导致构建过程将其编译为 .tlb 文件。
  2. 使用 $R 条件指令链接 .tlb 资源,如下所示:{$R MyProject.tlb}

关于delphi - 替换Delphi XE3中的RIDL文件和typelib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830396/

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