在Delphi XE3中替换RIDL文件和typelib

时间:2013-11-07 07:41:38

标签: delphi com delphi-xe typelib

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

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

乱搞了类型库编辑器几个小时,尝试从Delphi和shell / regsvr32注册typelibrary / exe,delphi因为一些神奇的原因选择了新文件,一切都按预期工作。

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

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

1 个答案:

答案 0 :(得分:6)

据我了解,步骤如下:

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