使用 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 年就开始工作了。
这是我试过的方法:
已获取最新的 OpenSSL DLL。同样的错误
创建了一个新的 XE7 测试项目,它只是一个包含 HTTPServer 和 OpenSSL IOHandler 组件的表单。有效。
我没有在我的主要应用程序中使用视觉组件;所以我想我会尝试在主要应用程序中创建一个表单。我添加了适当的组件,但失败并出现相同的错误。
由于该项目是从 D2007 移植的,我认为旧项目中的设置可能会干扰。我创建了一个新的 DXE 项目并导入了表格、单位等。同样的错误。
我想可能是我手动生成的代码不正确,所以我把它复制到测试DXE项目中;它奏效了。
我确实发现在 System.Sysutils 中调用 SafeLoadLibrary 中的 LoadLibrary 会引发错误。
我唯一的推测是。
某处设置干扰了正确操作。
缺少支持 DLL 的路径
有什么想法吗?
原来我在与 EXE 相同的文件夹中有旧的 libeay32.DLL 和 ssleay32.DLL(对于 Indy9),而最新版本在子文件夹中。我正在使用 IdOpenSSLSetLibPath 来设置子文件夹的路径,但必须在 Indy 组件之前加载旧的 libeay32.DLL。由于历史原因,我需要同时支持两者——我还有一些 D2007 代码 运行 Indy9 组件。
关于我如何支持这种情况的任何想法(除了重写大量旧代码以使用 Indy 10)?
原来我包含了一个使用 Synapse TCP/IP 库的内部库。它的 SSL 实现在初始化期间加载 DLL,这些 DLL 安装在应用程序的根目录下。当 Indy 尝试加载最新的时,它失败了。
似乎没有任何方法可以覆盖 Synapse 中 DLL 的路径,因此我修改了源代码以从子文件夹加载它们。
我正在尝试在我的 HTTP 服务器上实现 SSL 支持,但在激活服务器组件时出现异常:
The ordinal 3314 could not be located in the dynamic link library "ssleay32.dll".
这是我从 Delphi 2007 移植到 Delphi XE7 的应用程序。它在 2007 年就开始工作了。
这是我试过的方法:
已获取最新的 OpenSSL DLL。同样的错误
创建了一个新的 XE7 测试项目,它只是一个包含 HTTPServer 和 OpenSSL IOHandler 组件的表单。有效。
我没有在我的主要应用程序中使用视觉组件;所以我想我会尝试在主要应用程序中创建一个表单。我添加了适当的组件,但失败并出现相同的错误。
由于该项目是从 D2007 移植的,我认为旧项目中的设置可能会干扰。我创建了一个新的 DXE 项目并导入了表格、单位等。同样的错误。
我想可能是我手动生成的代码不正确,所以我把它复制到测试DXE项目中;它奏效了。
我确实发现在 System.Sysutils 中调用 SafeLoadLibrary 中的 LoadLibrary 会引发错误。
我唯一的推测是。
某处设置干扰了正确操作。
缺少支持 DLL 的路径
有什么想法吗?
原来我在与 EXE 相同的文件夹中有旧的 libeay32.DLL 和 ssleay32.DLL(对于 Indy9),而最新版本在子文件夹中。我正在使用 IdOpenSSLSetLibPath 来设置子文件夹的路径,但必须在 Indy 组件之前加载旧的 libeay32.DLL。由于历史原因,我需要同时支持两者——我还有一些 D2007 代码 运行 Indy9 组件。 关于我如何支持这种情况的任何想法(除了重写大量旧代码以使用 Indy 10)?
原来我包含了一个使用 Synapse TCP/IP 库的内部库。它的 SSL 实现在初始化期间加载 DLL,这些 DLL 安装在应用程序的根目录下。当 Indy 尝试加载最新的时,它失败了。 似乎没有任何方法可以覆盖 Synapse 中 DLL 的路径,因此我修改了源代码以从子文件夹加载它们。