You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 11+ 64位程序:如何指定Indy10初始化OpenSSL时加载的DLL?

解决Indy10为64位程序指定自定义OpenSSL DLL文件名的问题

不需要修改Indy的源码或.inc文件,你可以在程序启动阶段动态指定要加载的libssl和libeay文件名,具体方法如下:

  • 核心思路:Indy10的OpenSSL相关单元提供了全局变量(或辅助函数),允许你在初始化SSL组件前自定义DLL文件名,无需修改框架源码。

具体实现步骤

  1. 引入必要单元:确保代码中引用了IdSSLOpenSSLHeaders单元(如果使用辅助函数则需额外引用IdSSLOpenSSL)。
  2. 在程序最早期设置文件名:必须在创建任何Indy SSL组件(如TIdSSLIOHandlerSocketOpenSSL)之前执行设置操作——比如放在项目的DPR文件开头,或者主窗体OnCreate事件的最开始位置。

示例代码(Delphi)

方式一:直接设置全局变量

uses
  IdSSLOpenSSLHeaders;

begin
  // 为64位程序指定自定义SSL库文件名
  libssl := 'libssl64.dll';
  libeay := 'libeay64.dll';
  
  Application.Initialize;
  // 后续执行窗体、组件初始化等操作
end.

方式二:调用辅助函数(较新Indy版本支持)

如果你的Indy版本较新,可使用更简洁的IdOpenSSLSetLibNames函数:

uses
  IdSSLOpenSSL;

begin
  IdOpenSSLSetLibNames('libssl64.dll', 'libeay64.dll');
  
  Application.Initialize;
  // 后续执行初始化操作
end.

注意事项

  • 确保指定的DLL文件路径正确,若不在程序目录下需包含完整路径;
  • 必须保证设置操作在Indy加载OpenSSL库之前完成,否则设置不会生效。

内容的提问来源于stack exchange,提问作者Warren P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 15:32:35