最近一段时间,我一直在尝试使用 SSL 在我的 IW 程序上工作,并且一直遇到“无法加载 SSL 库”。我已经听从了我能找到的关于这个主题的每一条建议,但仍然没有快乐。我已经在本地目录和 system32 中尝试了建议的 DLL。
有人对我应该使用什么 OpenSSL DLL 有明确的答案吗?它们的构造是什么?还是有其他想法?
Indy:昨天更新到最新快照 IntraWeb:已安装股票 D2007
这是在 Vista 机器上运行的,如果这有什么不同的话。
TIA,
特雷弗
最近一段时间,我一直在尝试使用 SSL 在我的 IW 程序上工作,并且一直遇到“无法加载 SSL 库”。我已经听从了我能找到的关于这个主题的每一条建议,但仍然没有快乐。我已经在本地目录和 system32 中尝试了建议的 DLL。
有人对我应该使用什么 OpenSSL DLL 有明确的答案吗?它们的构造是什么?还是有其他想法?
Indy:昨天更新到最新快照 IntraWeb:已安装股票 D2007
这是在 Vista 机器上运行的,如果这有什么不同的话。
TIA,
特雷弗
解决了:
看起来问题是我的机器上漂浮的 bpl。
以下是我采取的步骤,以防其他人难以让独立服务器与 D2007 和预安装的库一起运行:
现在,对于 OpenSSL DLL:
此时,我能够编译并运行演示和我的应用程序。
感谢所有的帮助。
特雷弗
您需要 OpenSSL dll(0.9.8i 为我工作,但我没有使用 Vista),您可以在此处下载(正如我认为您所建议的那样,Indy dll 不适用于 IW9,这是该版本与 D2007 捆绑在一起)。
安装后,将 ssleay32.dll 和 libeay32.dll 从 system32 复制到您的应用程序目录。
如果它仍然不起作用:
希望这可以帮助。
编辑:一旦你得到这个工作,你会想要将 sslversion 更改为 sslv3,并让用户关闭 v2。
我是构建上述 IntraWeb SSL dll 的特殊版本的人。为了完成上面的答案,让我解释一下为什么需要特殊构建:
以前的 Indy 和 IntraWeb 版本使用稍微修改过的 OpenSSL 版本。修改包括与时区计算相关的几个功能,这些功能当时在 Delphi 或 Indy 中不可用。
因此,当有人将一组未修改的 OpenSSL dll(不是 Indy OpenSSL dll)与旧的 Indy 或 IntraWeb 版本一起使用时,由于缺少导出,他将收到“无法加载 SSL 库”错误。
由于我们在 Delphi 2009 中使用 Indy 版本,因此不再需要这些更改。这就是为什么当前的 Indy 版本——来自 SVN 甚至是 Delphi 2007——与 IntraWeb 一起也可以与来自 slproweb 的 dll 一起使用(不包括这些修改)。
但请注意,slproweb dll确实需要 MS VC++ 运行时 dll。
为了避免这种情况,我经常为 Indy 创建一组自己的 dll:ftp: //ftp.fulgan.com/SSL/
截至今天,您应该可以使用此版本: ftp: //ftp.fulgan.com/SSL/openssl-1.0.0d-i386-win32-rev2.zip
我的 dll 集不需要安装 MC VC 运行时。
所以可以肯定地说,任何比 Delphi 2009 更新的 Indy 版本和/或相应的 SVN 版本都可以安全地与 slproweb(具有 VC 依赖项)或我们自己的(来自 fulgan 镜像)dll 一起使用。