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

如何让C++Builder程序无需依赖DLL链接?附程序大小合理性疑问

解决C++Builder Clang编译独立EXE及程序大小问题

一、消除DLL依赖生成独立EXE

针对你遇到的cc32c280mt.dll、borlndmm.dll等依赖问题,可按以下步骤调整:

  • 修改C++运行时库链接方式:打开项目选项(Project -> Options),进入C++ Compiler -> Linking,将Runtime Library设置为Multi-threaded (/MT)(Release构建),把C/C++运行时库静态嵌入EXE,避免依赖cc32cxxx系列动态库。
  • 静态链接FireDAC:在项目选项的FireDAC -> Linking中,勾选Link with FireDAC statically,确保FireDAC核心库被静态编译进EXE,而非依赖动态组件。
  • 禁用Borland内存管理器:在项目选项的C++ Compiler -> Preprocessor中添加预定义宏_NO_VCL_MEMMGR,让程序使用标准C++内存管理器,不再依赖borlndmm.dll。
  • 检查组件链接状态:确认所有使用的VCL/FMX、第三方组件均为静态链接,保持Link with runtime packages为False,且未手动添加动态包依赖。

二、关于FireDAC+SQLite程序18-20MB大小的合理性

  • 这个体积是合理的。Clang静态链接C运行时库、FireDAC静态库及SQLite驱动后,这些模块的代码量总和本身较大:FireDAC包含大量数据库抽象层逻辑,C静态运行时库也占据一定体积,再加上业务代码,18-20MB属于正常范围。
  • 若需缩小体积,可尝试以下优化:
    • 启用链接时优化(LTO):在项目选项C++ Compiler -> Optimization中勾选Link-Time Optimization,编译器会在链接阶段合并优化冗余代码。
    • 开启EXE压缩:在项目选项C++ Linker -> Output中勾选Compress EXE,或使用UPX等工具对最终EXE压缩(注意:压缩可能小幅影响启动速度,需测试兼容性)。
    • 裁剪FireDAC组件:仅保留SQLite相关驱动和组件,移除未使用的其他数据库驱动(如MySQL、Oracle等),减少静态链接的冗余代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 08:43:14