【问题标题】:Grouping DLL's for use in Executable将 DLL 分组以在可执行文件中使用
【发布时间】:2010-03-05 15:39:23
【问题描述】:

有没有办法将一堆 DLL 分组并在运行时仍然使用它们(未压缩)。抱歉,这个问题听起来既简洁又愚蠢,但我不知道还能问什么。

我会解释一下情况:

我们有两个独立的 Windows 应用程序,现在我们的一个应用程序已经膨胀到如此笨拙的比例,以至于另一个应用程序无法在第一个应用程序的范围之外运行。我们希望保持我们的一些封装,同时让较小的程序使用一些较大的程序的功能。

运行应用程序没有问题,除了我们不想发送较小项目的所有 20-30 DLL。

【问题讨论】:

  • 这些是 .NET 程序集还是本机代码库?

标签: delphi dll


【解决方案1】:

可以通过添加启动代码来检查目标系统上是否存在 DLL,如果不存在则从资源部分中提取它们(或简单地标记到 exe 的末尾)。 Process Explorer 就是一个很好的例子——它以单个二进制文件的形式分发,但在运行时会提取并安装驱动程序。

【讨论】:

    【解决方案2】:

    如果您遇到大部分或所有这些程序集必须保存在一起的情况,那么我强烈建议您将代码文件合并到同一个项目中并重新编译。这样你就只剩下一个程序集了。

    当然还有其他考虑因素,例如编译时间、最终 dll 的总体大小、各个部分的更改频率以及每个组件是否在没有其他组件的情况下部署。

    这样做的公司的一个例子是Telerik。他们的开发组件都被编译到同一个程序集中。这使部署变得轻而易举。相比之下,Dev Express 将几乎每个控件都放入了自己的程序集中。由于这只是维护,更不用说部署,Dev Express 项目不适合胆小的人。

    (我不为这两家公司工作。但是,我对这两个工具包都有很多经验。)

    【讨论】:

    • 他们没有使用程序集,它不是 .NET。 (你的答案仍然适用。)
    【解决方案3】:

    您可以将 DLL 存储为资源,并使用 BTMemoryModule,它本质上允许您在流上加载库。

    这样您就可以将多个 DLL 直接编译到 EXE 或单个资源 DLL 中。

    http://www.jasontpenny.com/blog/2009/05/01/using-dlls-stored-as-resources-in-delphi-programs/

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      相关资源
      最近更新 更多