.pas、.hpp、.cpp,不可只有部分原始碼.bpk (Borland Package) 檔案.dpk (Delphi Package),使用 DPK2BPK 工具轉換.bpk 或 .bdsproj),匯入 .dpk 列出的所有單元| 問題類型 | 檢查重點 | 解決工具/方法 |
|---|---|---|
| BPL 重名 | 系統目錄 (System32)、Borland 目錄下是否有同名 .bpl | 刪除所有舊版本 BPL |
| 檔案重名 | .pas/.h/.hpp/.dcu/.obj/.lib/.bpl/.bpi/.dfm/.res 等副檔名衝突 | 刪除舊檔;推薦 Beyond Compare 批次比對 |
| 路徑設定 | 編譯搜尋路徑、連結庫路徑;BCB2006 分別設定 Bcc32/Dcc32/ilink32/tasm32,順序影響編譯結果 | 逐項核對路徑優先序 |
確認硬碟實際存在 → 檢查路徑設定 (注意事項 #3)
未列入專案的檔案不會產生連結所需的 .obj/.lib,注意多套件編譯的先後順序
{$IFDEF VER180} // BDS 2006
{$IFDEF BCB} // C++Builder 2006
{$DEFINE VER140} // 使用 BCB6 相容編譯開關
{$ELSE} // Delphi 2006
{$DEFINE VER170} // 使用 D9 相容編譯開關
{$ENDIF}
{$ENDIF}
依實際檔案內容調整,確保正確的條件編譯分支
BCB2006 缺少 DesignEditors 完整原始碼,編譯會報缺 Proxies。解決:
designide (無副檔名),對應 designide.dcpBCB6 則需將 .dcp 加入專案或指定對應 .lib
rxlib 變數與 BCB2006 新增 TControl 屬性重名ehlib 需配合 TFieldType 新增值補充對應項.bdsproj 為 XML 格式,關鍵區段:
<LINKER>
<ALLOBJ value="c0pkg32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib"/>
<OTHERFILES value=""/>
</LINKER>
排錯步驟:
ALLLIB 中的 $(LIBFILES)、$(LIBRARIES)、$(SPARELIBS):
vclsmp.lib)FILELIST 移除無效檔案或修正路徑參考資源:CSDN 社群討論串
BCB2006 元件安裝的核心在於「路徑、重名、版本相容」三大基礎建設,配合專案檔 XML 手術式修正 Link AV。建議建立標準化檢查清單,將經驗固化為流程,避免重複踩坑。工具鏈:Beyond Compare (檔案比對) + UEdit32 (專案檔編輯) + DPK2BPK (格式轉換)。