【问题标题】: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 文件本身添加到您的主项目中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        • 1970-01-01
        • 1970-01-01
        • 2018-02-23
        相关资源
        最近更新 更多