問題現象
在安裝了 C++ Builder 的開發機上編譯運行完美,但將生成的 EXE 複製到無開發環境的目標機器時,啟動即彈出「找不到 xxx.bpl」或「缺少 RTL 動態庫」等錯誤。這是初學者最常遇到的「發布難題」。
根本原因
預設專案設置為動態連結運行時套件,導致 EXE 依賴外部 BPL(Borland Package Library)與 RTL 動態庫。目標機未安裝 BCB,自然找不到這些文件。
三步徹底解決(以 BCB6 為例)
- 切換到 Release 配置
專案 → Options → Compiler → 勾選 Release(而非 Debug)。
- 禁用「Build with runtime packages」
專案 → Options → Packages → 取消勾選 Build with runtime packages。
效果:將 VCL/RTL 代碼靜態鏈接進 EXE,不再依賴 .bpl 文件。
- 禁用「Use dynamic RTL」
專案 → Options → Linker → 取消勾選 Use dynamic RTL。
效果:將 C 運行庫靜態鏈接,徹底擺脫 borlandmm.dll、rtl150.bpl 等動態庫。
驗證與補充
- 重新編譯後,使用
TDump 或 Dependency Walker 檢查 EXE 導入表,確認無 BPL 依賴。
- 若仍報錯,檢查是否引用了第三方動態組件(如 Indy、FastReport 等),同理將其設為靜態鏈接或隨程式部署對應 .bpl。
- 靜態鏈接會使 EXE 體積增大(通常 +300KB~1MB),換取的是「零依賴、即複製即運行」的部署便利性,絕大多數桌面應用此利大於弊。
進階:自動化構建腳本
在專案組中建立兩組配置:Debug_Dynamic(開發調試用,編譯快)與 Release_Static(發布用),配合批處理或 CI/CD 一鍵產出乾淨的發布包。