C:\Borland\CBuilder\C:\dx5sdk\ (範例為 DX5,新版同理)BCB 自帶 Include 目錄下已有舊版 DirectX 標頭 (如 ddraw.h 為 DX3 版)。若直接將 SDK include 加入專案搜尋路徑,編譯器會優先找到 BCB 目錄下的舊版,導致缺少新介面定義。
C:\dx5sdk\include\ 下所有檔案複製到 C:\Borland\CBuilder\Include\,覆蓋同名舊檔。#include <d3d.h> 等時使用最新 SDK 版本,無需調整搜尋順序。DX SDK 隨附的 Borland 版 .lib 可能有問題。建議:
.lib (如 dx5_bcb_libs.zip)。C:\Borland\CBuilder\Lib\ (或 Lib\PSDK),覆蓋舊檔。WinMain、WndProc 進入點。在每個使用 DirectX 標頭的 .cpp 最前面 (或專案條件定義) 加入:
#if defined(__BORLANDC__) && defined(__WIN32__)
#define _WIN32
#endif
// 若仍有編譯錯誤,嘗試追加
#define WIN32
#define WIN95
原因:BCB 對 _WIN32 等巨集處理較舊,DirectX 標頭依賴此巨集啟用正確定義。
建立最小 DirectDraw/Direct3D 初始化程式,確認無「未定義識別符」、「庫檔格式錯誤」等問題。