C++Builder 獨特優勢在於可直接在 C++ 專案中引用 Delphi (Object Pascal) 原始碼(.pas)、窗體 (.dfm) 與元件,實現雙語言協同開發。編譯器會自動為 .pas 生成對應的 .hpp 標頭檔,讓 C++ 程式碼能呼叫 Pascal 的類別、函式、常數。
核心規則與限制
- IDE 限制: 無法在設計視窗中編輯 Delphi 窗體 (.dfm),需用
convert.exe 轉為文字格式編輯後再轉回,或直接編輯 .pas 邏輯碼。
- 單向呼叫較易: C++ 呼叫 Pascal 透明度高;Pascal 呼叫 C++ 需額外處理 (extern "C"、.hpp 互含)。
- 無法鏈接 .dcu: 必須提供 .pas 原始碼,或由 Delphi 3.x 產生 .obj 再鏈接。
- 專案統一編譯: C++Builder 將 .pas 視為專案一部分統一建構,無需手動切換編譯器。
加入 Delphi 單元步驟
- 專案右鍵 Add to Project → 選擇
*.pas。
- 編譯時自動產生
UnitName.hpp,C++ 單元直接 #include "UnitName.hpp" 即可使用其中的類別/函式。
使用 Delphi 元件的三種來源檔案類型
| 副檔名 | 編譯器處理流程 |
| .obj | 直接鏈接至設計套件庫 |
| .cpp | C++ 編譯器 → .obj → 鏈接 |
| .pas | Pascal 編譯器 (dcc32 精簡版) → .dcu + .obj + .hpp → .obj 鏈接,.hpp 供應用程式引用 |
常見相容性問題
- Pascal 特有語言特性 (集合、集合型別、動態陣列語法、介面/類別參考計數語義差異) 可能無法完整對應到 C++,導致 .hpp 生成錯誤或鏈接失敗。
- 安裝元件到元件庫、生成 .hpp、應用程式鏈接三個階段均可能出錯。
最佳實踐建議
- 核心邏輯用 Pascal 開發(利用 VCL 原生優勢),UI 與系統整合用 C++。
- 跨語言介面定義盡量簡單:基本型別、記錄、純虛擬介面。
- 將 Pascal 單元整理為獨立庫專案,輸出 .obj/.hpp,主專案僅引用產物,降低耦合。
善用雙語言特性,可在團隊中發揮 Delphi 快速開發與 C++ 系統級控制的雙重優勢。