异常加载与Indy10与HTTP服务器ssleay32
我试图在HTTP服务器上实现SSL支持,并且在激活服务器组件时收到异常:
序号3314不能位于动态链接库“ssleay32.dll”中。
这是我从Delphi 2007移植到Delphi XE7的应用程序。 它一直在2007年工作。
以下是我所尝试的:
得到最新的OpenSSL DLLs。 同样的错误
创建了一个新的XE7测试项目,它仅仅是HTTPServer和OpenSSL IOHandler组件的一个表单。 有效。
我没有在我的主应用程序中使用可视化组件; 所以我想我会尝试在主应用程序中创建表单。 我添加了相应的组件,并且失败时出现相同的错误。
由于该项目是从D2007移植过来的,我认为旧项目中可能存在可能会干扰的设置。 我创建了一个新的DXE项目并导入了窗体,单位等。同样的错误。
我想可能我手动生成的代码可能不正确,所以我将它复制到测试DXE项目中; 它的工作。
我确实发现在System.Sysutils的SafeLoadLibrary中调用LoadLibrary会引发错误。
我唯一的猜测是。
有一个设置会干扰正确的操作。
有一个缺少支持DLL的路径
有任何想法吗?
事实证明,我有一个老的libeay32.DLL和ssleay32.DLL(用于Indy9)在与EXE相同的文件夹中,以及子文件夹中的最新版本。 我使用IdOpenSSLSetLibPath来设置子文件夹的路径,但在Indy组件之前必须加载旧的libeay32.DLL。 由于历史原因,我需要同时支持 - 我仍然使用Indy9组件运行一些D2007代码。 关于如何支持这种情况的任何想法(很少重写很多旧代码来使用Indy 10)?
事实证明,我包含了一个使用Synapse TCP / IP库的内部库。 它的SSL实现在初始化过程中加载DLL,这是安装在应用程序根目录下的DLL。 当Indy试图加载最新的时候,它失败了。 似乎没有任何方法可以覆盖Synapse中DLL的路径,因此我修改了源以从子文件夹加载它们。
链接地址: http://www.djcxy.com/p/91079.html上一篇: Exception loading ssleay32 with Indy10 with HTTP Server
下一篇: Getting list of underlying menu items via UIAutomation with Delphi