使用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
相关产品推荐
相关产品推荐

