提問者在 XP 虛擬機的 VC6.0 開發 MFC 連 MySQL 程式,複製 .exe 到 Win10 主機運行報錯。這是典型的運行時庫與系統 API 不兼容問題。
為什麼會失敗?
- VC6.0 年代久遠(1998),生成的二進制依賴舊版
MSVCRT.dll、MFC DLL,Win10 可能缺失或版本衝突;
- 32 位/64 位差異、UAC 權限、MySQL 客戶端庫路徑不同,皆會導致啟動失敗;
- 虛擬機環境與實體機硬體抽象層(HAL)不同,驅動級依賴更不可移植。
正確做法
- 在目標系統(Win10)安裝現代 IDE(VS2019/2022 Community 免費);
- 將源碼遷移過去,**原地重新編譯**,自動鏈接當前系統的運行時庫;
- 若必須用 VC6.0 維護舊專案,至少在目標系統安裝對應的 VC6 運行時補丁包,但強烈不建議新專案繼續用 VC6。
「舊編譯器產生的程式,拿到新系統跑,純屬碰運氣;重新編譯才是專業態度。」