【问题标题】:How to have multiple type libraries in a Delphi project?如何在 Delphi 项目中拥有多个类型库?
【发布时间】:2012-02-20 21:59:51
【问题描述】:
如果您有一个 Delphi 项目并想向其中添加一个类型库,那么您可以非常轻松地。
但是,我们希望能够添加多个不同的类型库。 Delphi XE IDE 似乎迫使您拥有一个且只有一个名为的类型库
MyProject.tlb
我希望能够在我们的主项目中拥有多个类型库并制作 COM 插件,但我不想要一个单一的类型库,而是需要多个类型库用于各种不同类型的插件。
这可行吗?是否只有 IDE 执行“只能有一个 TLB”规则?
【问题讨论】:
标签:
delphi
com
delphi-xe
typelib
【解决方案1】:
你当然可以。在二进制文件的最终编译中,类型库只是被视为另一种资源。
听起来您的 IDE 将您限制为一种类型的库。如果您可以编辑原始 .RC 文件,则可以在其中包含对 .tlb 的引用。
例如...来自 .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 后,我将其打开并查看资源。有两个类型库。
我希望这会有所帮助。
【解决方案2】:
AFAIK,IDE 不支持项目中的多个 TypeLibraries。但是,您可以做的是创建单独的外部 TypeLibraries(文件 > 新建 > 其他 > Delphi 项目 > 活动 > 类型库)来创建独立的 .tlb 文件,将它们注册到操作系统,然后在需要时在项目的 TypeLibrary 中引用它们.
但是,如果您所做的只是创建主项目使用的 COM 插件,则无需在主项目中包含 COM 插件 TypeLibraries。您所需要的只是接口定义。只需将生成的<UnitName>_TLB.pas 单元添加到主项目的uses 子句中即可。不要将实际的 .tlb 文件本身添加到您的主项目中。