首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ Builder 2006 元件安裝完整指南:從 BPK 建立到 Link AV 錯誤排除

     編輯:關於C++

安裝前置作業

  1. 取得完整原始碼:必須包含所有 .pas、.hpp、.cpp,不可只有部分原始碼
  2. 專案檔準備:
    • 優先尋找 .bpk (Borland Package) 檔案
    • 若只有 .dpk (Delphi Package),使用 DPK2BPK 工具轉換
    • 轉換失敗時,手動建立新套件專案 (.bpk 或 .bdsproj),匯入 .dpk 列出的所有單元
  3. 編譯與安裝:在 IDE 中開啟套件專案 → 編譯 → 安裝

三大核心注意事項(必須反覆驗證)

問題類型檢查重點解決工具/方法
BPL 重名系統目錄 (System32)、Borland 目錄下是否有同名 .bpl刪除所有舊版本 BPL
檔案重名.pas/.h/.hpp/.dcu/.obj/.lib/.bpl/.bpi/.dfm/.res 等副檔名衝突刪除舊檔;推薦 Beyond Compare 批次比對
路徑設定編譯搜尋路徑、連結庫路徑;BCB2006 分別設定 Bcc32/Dcc32/ilink32/tasm32,順序影響編譯結果逐項核對路徑優先序

常見編譯連結錯誤與排除策略

1. 找不到 .obj/.dcu 檔案

確認硬碟實際存在 → 檢查路徑設定 (注意事項 #3)

2. 檔案未加入專案

未列入專案的檔案不會產生連結所需的 .obj/.lib,注意多套件編譯的先後順序

3. 編譯開關控制檔 (.inc) 需手動調整

{$IFDEF VER180}  // BDS 2006
  {$IFDEF BCB}     // C++Builder 2006
    {$DEFINE VER140} // 使用 BCB6 相容編譯開關
  {$ELSE}          // Delphi 2006
    {$DEFINE VER170} // 使用 D9 相容編譯開關
  {$ENDIF}
{$ENDIF}

依實際檔案內容調整,確保正確的條件編譯分支

4. DesignEditors 單元與 .dcp 檔案處理

BCB2006 缺少 DesignEditors 完整原始碼,編譯會報缺 Proxies。解決:

  • 專案選項 → Pascal Compiler (Dcc32) → Other Options
  • 勾選 "Use package .dcps when compiling"
  • 填入 designide (無副檔名),對應 designide.dcp

BCB6 則需將 .dcp 加入專案或指定對應 .lib

5. 原始碼層級編譯錯誤 (見招拆招)

  • 變數名稱衝突:如 rxlib 變數與 BCB2006 新增 TControl 屬性重名
  • 型別擴充:如 ehlib 需配合 TFieldType 新增值補充對應項

6. Link AV 錯誤 (最棘手):手動修改專案檔 XML

.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>

排錯步驟:

  1. 先完成上述三大注意事項檢查
  2. 使用 UEdit32 編輯專案檔 (IDE 修改後需關閉重開專案生效)
  3. 清理 ALLLIB 中的 $(LIBFILES)、$(LIBRARIES)、$(SPARELIBS):
    • 移除專案不需的套件與庫
    • 刪除重複項目、調整順序
    • 手動加入 IDE 無法加入的庫 (如 vclsmp.lib)
  4. 檢查 FILELIST 移除無效檔案或修正路徑

參考資源:CSDN 社群討論串

總結

BCB2006 元件安裝的核心在於「路徑、重名、版本相容」三大基礎建設,配合專案檔 XML 手術式修正 Link AV。建議建立標準化檢查清單,將經驗固化為流程,避免重複踩坑。工具鏈:Beyond Compare (檔案比對) + UEdit32 (專案檔編輯) + DPK2BPK (格式轉換)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved