使用 HTTP Server 使用 Indy10 加载 ssleay32 异常

Exception loading ssleay32 with Indy10 with HTTP Server

我正在尝试在我的 HTTP 服务器上实现 SSL 支持,但在激活服务器组件时出现异常:

The ordinal 3314 could not be located in the dynamic link library "ssleay32.dll".

这是我从 Delphi 2007 移植到 Delphi XE7 的应用程序。它在 2007 年就开始工作了。

这是我试过的方法:

我确实发现在 System.Sysutils 中调用 SafeLoadLibrary 中的 LoadLibrary 会引发错误。

我唯一的推测是。

有什么想法吗?


原来我在与 EXE 相同的文件夹中有旧的 libeay32.DLL 和 ssleay32.DLL(对于 Indy9),而最新版本在子文件夹中。我正在使用 IdOpenSSLSetLibPath 来设置子文件夹的路径,但必须在 Indy 组件之前加载旧的 libeay32.DLL。由于历史原因,我需要同时支持两者——我还有一些 D2007 代码 运行 Indy9 组件。 关于我如何支持这种情况的任何想法(除了重写大量旧代码以使用 Indy 10)?

原来我包含了一个使用 Synapse TCP/IP 库的内部库。它的 SSL 实现在初始化期间加载 DLL,这些 DLL 安装在应用程序的根目录下。当 Indy 尝试加载最新的时,它失败了。 似乎没有任何方法可以覆盖 Synapse 中 DLL 的路径,因此我修改了源代码以从子文件夹加载它们。