【问题标题】:Add .dll files to application将 .dll 文件添加到应用程序
【发布时间】:2015-08-21 14:16:11
【问题描述】:

在我的应用程序(使用 Delphi XE8 构建)中,我使用 IdHTTP 组件。当我尝试运行该应用程序时,抛出了以下异常:“无法加载 SSL 库”。 我通过从这个站点下载 OpenSSL 库解决了这个问题 http://thundaxsoftware.blogspot.nl/2014/09/cannot-load-ssl-library-using-delphi-xe7.html 如果我是正确的:需要文件“libeay32.dll”和“ssleay32.dll”。

但它只对我有用。我的一个朋友也使用这个应用程序,遇到了同样的错误(“无法加载 SSL 库”)。 我希望其他人能够下载我的应用程序,而不必单独下载 OpenSSL 库。 是否可以将这两个文件包含到我的应用程序中? 例如,通过将文件夹添加到应用程序的目录位置?如果是这样,我怎样才能让应用程序在需要时找到这些文件?

我希望你能帮助我! (我为糟糕的英语道歉)

【问题讨论】:

  • 您是在问how to statically link OpenSSL libraries,还是如何将它们部署在相对于您的应用程序二进制文件的子文件夹中?只需将它们添加到与您的应用程序相同的文件夹中就足够了(并且在许多情况下是最佳选择)。
  • 这些库的静态链接是个坏主意,如果确实有可能的话。只需在可执行文件旁边部署 DLL。
  • @TLama 我想知道如何将这些 .dll 文件与我的应用程序链接,以便 IdTHHP 组件可以访问这些文件。我希望以这样的方式完成此操作,即我可以将应用程序发送给其他人,并且该应用程序仍与这些文件链接。我希望你能明白我的意思..
  • @David Heffernan:如果我将 DLL 与可执行文件一起部署,如何让我的应用程序找到这些文件?我是否必须添加库路径或其他内容?
  • 不,这是要搜索的第一个地方。 DLL 搜索路径从可执行目录开始。当然,我假设 Indy 会尊重 DLL 搜索路径,但我很确定,如果你不告诉它在哪里查找,DLL 搜索路径就是它可以尝试的全部。

标签: delphi dll directory


【解决方案1】:

您应该在安装程序中将 DLL(和任何其他必要的文件)与您的应用程序捆绑在一起。然后安装程序可以将 DLL 安装在与您的应用程序可执行文件相同的文件夹中,您的应用程序将能够在运行时找到它们。它还使您的用户只需运行 Setup.exe(或 YourAppSetup.exe)就可以更轻松地将文件放入正确的位置。

有几种产品可以为您创建安装程序,包括免费的(用 Delphi 编写的)Inno Setup

【讨论】:

  • (和类似的 Pascal 语法)
【解决方案2】:

处理此问题的最简洁方法是将 SSL DLL 部署到与可执行文件相同的目录中。

假设您没有指定库的位置,Indy 将默认使用系统 DLL 搜索顺序。并且可执行文件的目录是该搜索顺序的顶部。这样你的 DLL 文件就会被找到。

通过提供这些库,您的应用与其他应用隔离开来。这避免了所谓的DLL hell,其中多个应用程序共享库但都有不同的版本要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2012-11-22
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多