在我的应用程序中(使用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库。 是否可以将这两个文件包含在我的应用程序中? 例如,通过将文件夹添加到应用程序的目录位置?如果是这样,我怎样才能让应用程序在需要时找到这些文件?
我希望你能帮助我! (我为糟糕的英语道歉)
答案 0 :(得分:4)
您应该在安装程序中将DLL(以及任何其他必需的文件)与您的应用程序捆绑在一起。然后,安装程序可以将DLL安装在与应用程序可执行文件相同的文件夹中,您的应用程序将能够在运行时找到它们。通过简单地运行 Setup.exe (或 YourAppSetup.exe ),它还使您的用户更容易将文件放入正确的位置。
有几种产品会为您创建安装程序,包括免费的(用Delphi编写)Inno Setup。
答案 1 :(得分:0)
处理此问题最简洁的方法是将SSL DLL部署到与可执行文件相同的目录中。
假设您没有指定库的位置,Indy将默认使用系统DLL搜索顺序。可执行文件的目录是该搜索顺序的顶部。因此,您的DLL文件将被找到。
通过提供这些库,您的应用程序将与其他应用程序隔离。这避免了所谓的DLL hell,其中多个应用程序共享库但都具有不同的版本要求。