从Delphi 11 Alexandria升级到12.1 Athens后DLL体积翻倍原因咨询
默认编译选项变更
Delphi 12可能调整了默认调试或链接设置:比如默认开启了Detailed Debug Information(包含DWARF或TD32符号),这类调试信息会大幅增加DLL体积;或者默认静态链接了更多RTL/VCL库组件,而Delphi 11默认是动态链接。对比两个版本的项目编译选项(Project Options > Compiling和Linking面板),重点检查调试信息、链接方式相关设置。RTL/VCL库本身的体积膨胀
Delphi 12对RTL、VCL进行了功能扩充(比如新增Windows 11 API支持、新组件、多平台兼容代码),即使项目代码没改,链接的基础库文件体积已经变大。部分原本精简的库实现被替换为更全面的版本,直接导致最终DLL的体积增加。代码生成与优化策略调整
编译器默认优化选项可能变化:比如关闭了Code Compression,或者默认开启Stack Frames强制生成栈帧,这些都会让生成的机器码更冗余。另外,Delphi 12的链接器可能默认保留了更多符号信息,或者没有开启Strip Unused Code,导致未使用的库代码也被打包进DLL。嵌入资源的新增
检查两个版本DLL的资源表(用Resource Hacker工具),Delphi 12可能默认嵌入了更多资源:比如新版本的VCL主题资源、本地化字符串、编译器自动添加的调试资源或版本信息,这些资源的体积叠加后会让DLL大小翻倍。目标平台默认变更
如果项目在Delphi 11默认是32位编译,而Delphi 12默认切换到64位,64位代码的指针长度、指令集特性会让代码体积比32位大很多,接近翻倍是正常现象。确认两个版本的Target Platform设置一致。
内容的提问来源于stack exchange,提问作者tua

