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

使用TRESTClient的应用在新机器挂起,需部署哪些DLL?

解决Delphi REST应用部署挂起的DLL依赖问题

你的应用在目标机器上挂起,核心原因是缺少REST组件和HTTPS加密相关的依赖库——开发机因为安装了Delphi,这些库默认存在,但目标机器没有。下面是你需要部署的关键文件,按优先级整理:

1. REST组件核心依赖DLL

这些是TRESTClient/TRESTRequest运行的基础,缺一不可:

  • RESTCommon.dll:REST组件通用基础库,提供核心工具函数
  • RESTClient.dll:TRESTClient组件的核心实现文件
  • RESTRequest.dll:TRESTRequest组件的请求处理核心

你可以从开发机的Delphi安装目录bin文件夹里找到它们,比如C:\Program Files (x86)\Embarcadero\Studio\22.0\bin(版本号根据你的Delphi版本调整,10.4对应21.0,11对应22.0)。

2. HTTPS加密通信依赖(最关键!)

你的请求是HTTPS协议,没有SSL库支持的话,程序会因为无法建立安全连接而挂起:

  • 如果你用的是Delphi 10.x及更早版本:需要libeay32.dll和ssleay32.dll(OpenSSL 1.0.x版本)
  • 如果你用的是Delphi 11及以后版本:需要对应架构的libcrypto-1_1-x64.dll/libcrypto-1_1.dll(64/32位)和libssl-1_1-x64.dll/libssl-1_1.dll(64/32位)

⚠️ 注意:一定要从开发机的Delphibin目录复制这些SSL库,不要随便下载网上的版本,否则会因为版本不兼容导致程序崩溃或挂起。

3. VCL/RTL运行时依赖(按需部署)

如果你的程序是动态编译(项目选项中勾选了"Build with runtime packages"),还需要部署VCL和RTL的运行库:

  • rtlXXX.dll(XXX对应Delphi版本号,比如110对应Delphi 11):基础运行时库
  • vclXXX.dll:VCL组件运行时库

如果是静态编译(取消勾选"Build with runtime packages"),这些文件就不需要部署了。

额外部署注意事项

  • 确保所有DLL的架构和你的程序一致:32位程序配32位DLL,64位程序配64位DLL,混装必出问题
  • 把所有DLL和你的exe放在同一个文件夹里,最简单可靠
  • 测试时可以先把开发机bin目录下所有带REST、ssl、crypto关键词的DLL都复制过去,排除依赖问题后再逐步精简

最后提个小建议:你的代码里动态创建了组件,记得用try...finally包裹释放逻辑,避免内存泄漏(和当前挂起问题无关,但能提升程序稳定性):

procedure TForm44.Button1Click(Sender: TObject);
var
  LClient: TRESTClient;
  LRequest: TRESTRequest;
begin
  LClient := TRESTClient.Create('https://secure.authorize.net/');
  try
    LRequest := TRESTRequest.Create(LClient);
    try
      // 这里写你的请求执行逻辑
    finally
      LRequest.Free;
    end;
  finally
    LClient.Free;
  end;
end;

内容的提问来源于stack exchange,提问作者ioan ghip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:59