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

如何移除Delphi 12 FMX Windows应用对api-ms-win-crt-string-l1-1-0.dll的依赖?

Delphi 12 Win64 FMX应用UCRT依赖疑问

与传统Delphi应用不同,使用Delphi 12为Win64平台编译的纯空FMX应用,会依赖一个用户电脑可能未预装的库。我发现System.Win.Crtl.pas单元包含对api-ms-win-crt*...dll的依赖,其中存在如下条件编译指令:

{$IFDEF UCRT}
{...use these libraies...}
{$ELSE}
  msvcrt = 'msvcrt.dll';
{$ENDIF}

旧版Delphi始终仅依赖msvcrt.dll,但我未在官方文档中找到UCRT条件编译指令的相关说明,因此想确认:是否可以取消定义该指令,让应用仅链接到msvcrt.dll?


解答
  • 不建议手动取消定义UCRT指令。Delphi 12针对Win64平台已将CRT(C运行时库)依赖切换至UCRT,这是微软现代Windows平台推荐的标准运行时库;而msvcrt.dll属于旧版运行时,微软已停止主动维护,仅保留兼容性支持。
  • 强行取消UCRT定义可能引发Delphi标准库功能异常,尤其是那些依赖UCRT新特性的API(如Unicode处理、新式文件操作函数等)。
  • 解决用户电脑缺少UCRT的更稳妥方案:
    • 在应用安装包中集成UCRT的可再发行组件包,微软提供了对应的离线安装程序,可直接嵌入你的安装流程。
    • 若Delphi 12支持,可选择静态链接UCRT,编译后的可执行文件会包含所需的UCRT代码,无需依赖系统动态库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:12:36