如何在Delphi项目中拥有多个类型库?

时间:2012-01-27 23:14:16

标签: delphi com delphi-xe typelib

如果你有一个Delphi项目,并想要为它添加一个类型库,你可以很容易。

但是,我们希望能够添加多个不同类型的库。 Delphi XE IDE似乎强迫您拥有一个且只有一个名为

的类型库
MyProject.tlb

我希望能够在我们的主项目中拥有多个类型库并执行COM插件,但我不想要一个单片类型库,而是需要多种类型的库用于各种不同类型的插件。

这可行吗?是仅仅是IDE强制执行“只能有一个TLB”规则吗?

2 个答案:

答案 0 :(得分:7)

你当然可以。类型库只是在二进制文件的最终编译中被视为另一个资源。

听起来你的IDE限制你使用一种类型的lib。如果您可以编辑原始.RC文件,则可以在那里包含对.tlb的引用。

E.G ...来自.RC文件的TEXTINCLUDE部分。

3 TEXTINCLUDE  
BEGIN
    "1 TYPELIB ""junk.tlb""\r\n"
    "\0"
END

4 TEXTINCLUDE  
BEGIN
    "2 TYPELIB ""junk2.tlb""\r\n"
    "\0"
END

资源编译器应将其作为第二个TYPELIB资源包含在内。我只是手工完成,我没有使用Visual Studio提供的支持。

一旦我编译了我的EXE,我打开它并查看资源。有两种类型的库。

Two Type Libraries in an EXE

我希望这会有所帮助。

答案 1 :(得分:3)

AFAIK,IDE不支持项目中的多个TypeLibraries。但是,您可以创建单独的外部类型库(文件>新>其他> Delphi项目>活动>类型库)来创建独立的.tlb文件,将它们注册到操作系统,然后在如果需要,你的项目的TypeLibrary。

但是,如果你所做的只是创建主项目使用的COM插件,那么就不需要在主项目中包含COM插件TypeLibraries。您只需要接口定义即可。只需将生成的<UnitName>_TLB.pas单元添加到主项目的uses子句中。不要将实际的.tlb文件本身添加到主项目中。