代應(yīng)用)
簡(jiǎn)介微軟VC6.0是微軟推出的經(jīng)典C集成開(kāi)發(fā)環(huán)境安裝包適配32位與64位系統(tǒng)兼容Windows 7、Windows 8及Windows 10適合需要搭建該開(kāi)發(fā)環(huán)境的學(xué)生、教師以及維護(hù)舊項(xiàng)目的程序員。壓縮包整體約52.52MB包含2000個(gè)文件以頭文件.h、庫(kù)文件.lib、C源文件.cpp為主體頭文件提供標(biāo)準(zhǔn)函數(shù)與類接口聲明庫(kù)文件提供編譯鏈接所需的靜態(tài)及動(dòng)態(tài)實(shí)現(xiàn)源文件則包含可參考的示例代碼還配有接口定義.idl與資源腳本.rc等完整覆蓋標(biāo)準(zhǔn)庫(kù)、微軟基礎(chǔ)類庫(kù)等編譯運(yùn)行組件。除了常規(guī)的編譯、調(diào)試功能還具備程序框架自動(dòng)生成、類管理、界面設(shè)計(jì)集成交互等特性并支持?jǐn)?shù)據(jù)庫(kù)接口、OLE2.0和WinSock網(wǎng)絡(luò)開(kāi)發(fā)可幫助復(fù)現(xiàn)經(jīng)典教材案例或維護(hù)舊版本工程。目前已有1838人學(xué)習(xí)或下載資源打包為zip壓縮包格式解壓后即可安裝部署省去逐一下載配置的麻煩。1. 還在 2025 年裝 Visual C 6.0這不是考古是剛需Visual C 6.0 這個(gè)名字一出現(xiàn)很多做 Win10 開(kāi)發(fā)的人第一反應(yīng)是“這東西還能裝上”。事實(shí)上在 win10 22H2 的機(jī)器上仍然有大量老設(shè)備驅(qū)動(dòng)、MFC 教學(xué)代碼和工控 HMI 工程只能在 VC6 里打開(kāi)編譯。這個(gè)安裝包本身沒(méi)有獨(dú)立的 32/64 位版本真正需要區(qū)分的是宿主系統(tǒng)位數(shù)和目標(biāo)程序位數(shù)。我一度以為讓它跑在 Win10 上是玄學(xué)直到自己手里一個(gè)維護(hù)了十多年的舊項(xiàng)目不能遷移才老老實(shí)實(shí)把安裝流程、補(bǔ)丁順序和編譯參數(shù)重新摸了一遍。這篇就把我在 win7/win8/win10 上重裝 VC6 的完整路徑講清楚適合三類人維護(hù)遺留工程的工程師、還在照著老教材學(xué) MFC 的學(xué)生、以及只把 VC6 當(dāng)編譯工具的控制行業(yè)從業(yè)者。2. 裝前先想清楚VC6 在 Win10 上到底能干什么2.1 位數(shù)只有一種裝的是 32 位編譯器64 位系統(tǒng)兼容運(yùn)行很多人在搜“visual c6.0 32/64位”時(shí)誤以為存在一個(gè) 64 位版本的安裝包。實(shí)際沒(méi)有。VC6 是 1998 年發(fā)布的 32 位開(kāi)發(fā)環(huán)境安裝程序本身只在 32 位指令集上運(yùn)行放在 64 位的 Win10 里靠的是 WOW64 兼容層。所以你在 win10 x64、win8 x64、win7 x64 上都能安裝但裝完的 cl.exe 是 32 位編譯器默認(rèn)生成的目標(biāo)程序是 32 位x86的 PE 文件。這一點(diǎn)必須在一開(kāi)始就立住標(biāo)題里的“32/64 位”更像是用戶在搜索時(shí)的真實(shí)訴求——他們的 Win10 是 64 位需要一個(gè)能在這臺(tái)機(jī)器上跑起來(lái)的 VC6 安裝包。你不需要一個(gè) 64 位版的 VC6你需要的是“能在 64 位系統(tǒng)上正常運(yùn)行的 VC6 安裝程序”。而 64 位的目標(biāo)程序VC6 本身做不到要靠后面說(shuō)的遷移路徑。我一般拿到一臺(tái)新機(jī)器先開(kāi)命令行看系統(tǒng)信息再動(dòng)手裝。否則裝了半小時(shí)最后發(fā)現(xiàn)路徑被系統(tǒng)目錄重定向搞亂白白浪費(fèi)功夫。檢查命令很簡(jiǎn)單wmic os get osarchitecture執(zhí)行后返回值是64-bit或32-bit。這個(gè)結(jié)果只決定系統(tǒng)兼容模式怎么設(shè)置不決定安裝包選哪個(gè)。2.2 安裝包怎么選英文原版優(yōu)先SP6 是必需品VC6 的安裝包在民間流傳版本極多中文漢化版、集成版、綠色版、網(wǎng)吧精簡(jiǎn)版都有。我做過(guò)的幾十次安裝里最容易翻車(chē)的恰恰是所謂的“中文版”。不是中文版本身不能用而是很多漢化封裝改過(guò)安裝腳本在 Win10 上解壓到臨時(shí)目錄時(shí)會(huì)觸發(fā) UAC 或殺軟攔截彈出“安裝程序無(wú)法讀取源文件”之類的問(wèn)題。所以我的選擇習(xí)慣是英文原版安裝盤(pán)鏡像或 ISO解壓到本地純英文路徑比如D:\soft\VC6安裝完成后補(bǔ) Visual C 6.0 Service Pack 6簡(jiǎn)稱 SP6這是官方最后一個(gè)大補(bǔ)丁修復(fù)了在較新 CPU 上的優(yōu)化器崩潰問(wèn)題如果你的機(jī)器 CPU 較新再補(bǔ)一個(gè)“VC6 Processor Pack”它能讓編譯器識(shí)別 Pentium 4 以后的指令集避免生成目標(biāo)代碼時(shí)出現(xiàn)“fatal error C1001”這類內(nèi)部編譯器錯(cuò)誤。這里要特別注意不要試圖用新版 Visual Studio 的“打開(kāi) VC6 工程”功能直接替代安裝。VS2019/2022 雖然能轉(zhuǎn)換.dsp/.dsw工程但轉(zhuǎn)換過(guò)程會(huì)把老工程的項(xiàng)目結(jié)構(gòu)改掉很多嵌入式廠商的老示例代碼轉(zhuǎn)換后根本編譯不過(guò)。如果你要的是“原樣復(fù)現(xiàn)舊構(gòu)建”老老實(shí)實(shí)裝回 VC6 是唯一可靠的路。2.3 提前準(zhǔn)備三個(gè)東西兼容模式、管理員權(quán)限、干凈安裝目錄在 Win10 上安裝 VC6最容易被忽略的是安裝目錄。VC6 默認(rèn)裝到C:\Program Files\Microsoft Visual Studio在 64 位系統(tǒng)上會(huì)被定向到C:\Program Files (x86)\這個(gè)重定向本身沒(méi)問(wèn)題但如果你以后要寫(xiě)批處理調(diào)用cl.exe路徑里有空格和括號(hào)會(huì)非常痛苦。我習(xí)慣在安裝時(shí)手動(dòng)改成D:\VC6或C:\VC6一勞永逸。安裝前還要把 Windows 安全中心的“應(yīng)用和瀏覽器控制”臨時(shí)關(guān)掉或者至少把安裝目錄加入排除列表。VC6 安裝程序會(huì)釋放一批舊的.ocx、.dll到系統(tǒng)目錄新版 Defender 對(duì)這類老文件的“信譽(yù)”判定經(jīng)常誤殺導(dǎo)致安裝到一半回滾。這個(gè)動(dòng)作不是玄學(xué)是 Win10 上最常見(jiàn)的安裝失敗原因之一。材料清單整理如下項(xiàng)目說(shuō)明VC6 英文原版解壓到純英文路徑別放在中文目錄下SP6 補(bǔ)丁必裝不裝的話在 Win10 上新建工程都可能崩潰Processor Pack可選建議新 CPU 上安裝Win10 兼容設(shè)置安裝程序和管理器 exe 都設(shè)置成 Windows XP SP3 兼容模式管理員權(quán)限安裝、打補(bǔ)丁、首次運(yùn)行都需要管理員3. 在 win7/win8/win10 上跑通安裝程序三步走3.1 第一步用兼容模式啟動(dòng)安裝程序右鍵setup.exe選擇“屬性 - 兼容性”勾選“以兼容模式運(yùn)行這個(gè)程序”下拉選“Windows XP (Service Pack 3)”再勾選“以管理員身份運(yùn)行”。這一步在 win7、win8、win10 里都一樣win8 和 win10 還要注意“更改所有用戶的設(shè)置”防止 UAC 提權(quán)后兼容設(shè)置丟失。如果你不想每次都右鍵設(shè)置也可以直接用注冊(cè)表寫(xiě)入兼容性標(biāo)志。下面的批處理一次搞定注意把SETUP_PATH改成你自己的實(shí)際路徑echo off set SETUP_PATHD:\soft\VC6\setup.exe reg add HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers /v %SETUP_PATH% /t REG_SZ /d WINXPSP3 /f start %SETUP_PATH%這段命令的作用是把setup.exe的兼容模式寫(xiě)入當(dāng)前用戶的注冊(cè)表。Layers項(xiàng)下的值為WINXPSP3表示用 WinXP SP3 兼容模式啟動(dòng)。用HKCU而不是HKLM是因?yàn)楫?dāng)前用戶安裝足夠不需要?jiǎng)尤植呗砸膊蝗菀子|發(fā)權(quán)限問(wèn)題。寫(xiě)入后直接start啟動(dòng)安裝程序。3.2 第二步組件選擇和路徑規(guī)劃安裝界面第一個(gè)對(duì)話框會(huì)問(wèn)你選擇安裝類型。別選“典型安裝”選“自定義安裝”。自定義里可以選擇“Visual C 6.0”主程序、“Data Access”數(shù)據(jù)訪問(wèn)組件、“Tools”工具集、以及“MSDN Library”聯(lián)機(jī)幫助文檔。MSDN 文檔體積很大而且對(duì)新系統(tǒng)支持不好我建議直接取消勾選等裝完后用在線文檔查函數(shù)即可省出接近 1GB 空間。路徑這一步務(wù)必改到自定義目錄。默認(rèn)路徑在 64 位系統(tǒng)上會(huì)有“Program Files (x86)”這個(gè)帶括號(hào)的路徑后續(xù)開(kāi)發(fā)工具、環(huán)境變量、批處理腳本都會(huì)因?yàn)檫@個(gè)括號(hào)變得難處理。我一般寫(xiě)D:\VC6組件目錄D:\VC6\Microsoft Visual Studio公共工具目錄D:\VC6\CommonVC98 編譯器目錄D:\VC6\VC98自定義安裝還會(huì)讓你選擇是否注冊(cè)“OLE/COM”和“ActiveX”控件。這里全部默認(rèn)即可不要取消。VC6 的 MFC 和 ATL 依賴這些舊 COM 組件取消后新建 MFC 工程會(huì)直接報(bào)錯(cuò)。安裝過(guò)程里如果彈出“檢測(cè)到舊版本”或“正在注冊(cè)控件”卡住不要關(guān)窗口等它跑完。VC6 的安裝程序會(huì)注冊(cè)大量 32 位 COM 組件在 Win10 上每個(gè)注冊(cè)都要經(jīng)過(guò) WOW64 轉(zhuǎn)換比原生慢好幾倍。表面上看像是卡死了實(shí)際是在等。3.3 第三步補(bǔ)丁順序和處理器包安裝完后立即打 SP6。補(bǔ)丁程序同樣需要管理員權(quán)限和兼容模式。順序不能亂先 SP6再 Processor Pack。如果先裝 Processor Pack 后裝 SP6SP6 會(huì)覆蓋掉部分處理器包文件反而導(dǎo)致編譯時(shí) SSE2 指令集識(shí)別失效。SP6 安裝包一般是一個(gè)可執(zhí)行文件雙擊運(yùn)行后會(huì)自動(dòng)定位到 VC6 安裝目錄。安裝完成后可以驗(yàn)證一下版本cl.exe如果輸出第一行顯示Version 12.00.8804以上說(shuō)明 SP6 已經(jīng)生效。常見(jiàn)的12.00.8168是未打補(bǔ)丁的原始版本會(huì)出現(xiàn)莫名其妙的C1001編譯器崩潰。Processor Pack 裝完后打開(kāi)MSDEV.EXE在“幫助 - 關(guān)于”里能看到“Processor Pack”字樣。我遇到過(guò)裝了處理器包但提示“無(wú)法定位程序輸入點(diǎn)”的問(wèn)題原因是補(bǔ)丁裝到了默認(rèn)路徑而你的 VC6 在自定義路徑解決方法是把補(bǔ)丁解壓后手動(dòng)復(fù)制到D:\VC6\VC98\Bin覆蓋同名文件。4. 接上系統(tǒng) SDK讓 VC6 能編譯出 Win10 能跑的程序4.1 進(jìn)入命令行編譯環(huán)境Vcvars32.batVC6 裝好后IDE 能直接編譯小型工程但真正需要長(zhǎng)期維護(hù)時(shí)命令行編譯才是可復(fù)現(xiàn)的方案。VC6 自帶一個(gè)環(huán)境變量設(shè)置腳本在默認(rèn)安裝路徑下是C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin\Vcvars32.bat如果你按我前面的建議裝到了D:\VC6那路徑就是D:\VC6\VC98\Bin\Vcvars32.bat調(diào)用方式不是直接雙擊而是在命令行里先call它讓環(huán)境變量在當(dāng)前進(jìn)程生效echo off call D:\VC6\VC98\Bin\Vcvars32.bat cl /nologo /G6 /MT /O1 /W3 hello.cpp這段批處理里call會(huì)把INCLUDE、LIB、PATH三個(gè)環(huán)境變量改寫(xiě)成 VC6 需要的值。/G6是生成針對(duì) Pentium Pro 及更高指令集優(yōu)化的代碼在 Win10 的 CPU 上完全沒(méi)問(wèn)題/MT讓 CRT 庫(kù)靜態(tài)鏈接生成的 exe 不再依賴 VC6 運(yùn)行時(shí)的 DLL/O1按最小體積優(yōu)化適合需要分發(fā)到不同 Win10 版本的小工具/W3設(shè)置警告級(jí)別不會(huì)把老工程里常見(jiàn)的類型轉(zhuǎn)換警告升級(jí)成錯(cuò)誤。這里有個(gè)容易搞混的點(diǎn)Vcvars32.bat一旦執(zhí)行當(dāng)前命令行的環(huán)境就被固定成 VC6 的 32 位編譯環(huán)境。如果你之后還要用新版的cl.exe必須重新開(kāi)一個(gè)命令行窗口不要在同一窗口里交叉調(diào)用。4.2 32 位編譯的三個(gè)必調(diào)參數(shù)VC6 的老編譯器默認(rèn)生成 PE32 格式的可執(zhí)行文件Win10 既能跑 32 位程序也能跑 64 位程序所以編譯參數(shù)里最關(guān)鍵是運(yùn)行時(shí)庫(kù)的選擇。參數(shù)作用適用場(chǎng)景/MT靜態(tài)鏈接多線程 CRT生成單文件 exe兼容性最好/MD動(dòng)態(tài)鏈接共享 CRT需要減小體積但目標(biāo)機(jī)器要裝對(duì)應(yīng)運(yùn)行庫(kù)/G6針對(duì) P6 以上指令集優(yōu)化新 CPU 上避免默認(rèn) /GB 的兼容層問(wèn)題我自己的習(xí)慣是控制臺(tái)工具一律/MT /O1MFC 窗口程序在工程設(shè)置里把“使用 MFC”改成“在靜態(tài)庫(kù)中使用 MFC”然后把“運(yùn)行時(shí)庫(kù)”選成“多線程 (/MT)”。這樣生成出來(lái)的 exe 在干凈的 Win10 上雙擊就能跑不會(huì)出現(xiàn)“缺少 MSVCP60.DLL”的報(bào)錯(cuò)。命令行編譯完成后用dumpbin驗(yàn)證目標(biāo)架構(gòu)dumpbin /headers hello.exe | findstr machine如果輸出包含x86說(shuō)明生成的是 32 位程序與預(yù)期一致。dumpbin在 VC6 安裝目錄的VC98\Bin下直接在編譯環(huán)境中就能用。4.3 64 位輸出別硬扛走遷移才是對(duì)的VC6 沒(méi)有任何官方 64 位編譯器所以如果你要生成 x64 的 exe剪貼 VC6 的安裝包也沒(méi)用。正確做法是先確認(rèn)這個(gè)老工程非遷不可的情況下用新版 Visual Studio 做一次“結(jié)構(gòu)保留式”遷移。我試過(guò)的最穩(wěn)妥流程是在 VC6 環(huán)境里用/Z7參數(shù)編譯所有源碼保留調(diào)試符號(hào)把.dsp工程導(dǎo)成.vcproj或讓新版 VS 自動(dòng)轉(zhuǎn)換轉(zhuǎn)換后不要直接編譯先檢查頭文件路徑里是否還有afxwin.h的舊宏定義把_WIN32_WINNT宏設(shè)到0x0601以上否則 Win10 API 不完整用新版編譯器把目標(biāo)平臺(tái)選成x64逐條處理指針截?cái)嗑?。如果你只是想要一個(gè)能在 64 位 Win10 上運(yùn)行的 32 位舊程序那沒(méi)必要折騰 64 位遷移。Windows 10 對(duì) 32 位 PE 的支持非常完善絕大多數(shù) VC6 編譯出來(lái)的老程序直接運(yùn)行沒(méi)有任何問(wèn)題。64 位遷移只有在需要大量?jī)?nèi)存尋址、加載 64 位 DLL、或接入新版硬件驅(qū)動(dòng)時(shí)才值得做。5. VC6 在 Win10 上的避坑清單五個(gè)常見(jiàn)故障5.1 安裝程序走到一半自動(dòng)回滾現(xiàn)象VC6 安裝界面復(fù)制文件到某個(gè)位置時(shí)忽然退出提示“安裝未完成”。在 Win10 22H2 上尤其頻繁。原因安裝程序在注冊(cè) ActiveX 控件時(shí)觸發(fā)了 Windows 安全中心的“受控文件夾訪問(wèn)”保護(hù)或者是殺毒軟件把安裝目錄里釋放出的臨時(shí) exe 當(dāng)成了病毒刪除。另一個(gè)常見(jiàn)原因是安裝源文件放在中文路徑下解壓出來(lái)的臨時(shí)文件路徑包含中文VC6 的老安裝程序?qū)?Unicode 路徑處理有缺陷。解決先把安全中心的“應(yīng)用和瀏覽器控制”臨時(shí)關(guān)閉將整個(gè)安裝源目錄加入 Defender 排除列表。然后把安裝源文件復(fù)制到D:\soft\VC6這種純英文路徑下重新以兼容模式和 Administrator 身份運(yùn)行。做這兩步后我還沒(méi)有遇到過(guò)繼續(xù)回滾的情況。5.2 第一次新建工程時(shí) MSDEV.exe 直接崩潰現(xiàn)象安裝、打補(bǔ)丁都成功打開(kāi)MSDEV.EXE似乎正常但點(diǎn)“新建工程”時(shí)窗口閃退或者選了 MFC 工程模板后立刻提示“該程序已停止工作”。原因VC6 的資源編輯器在 Win10 上讀取工具欄和快捷鍵資源時(shí)與新版系統(tǒng)字體渲染引擎沖突。常見(jiàn)觸發(fā)點(diǎn)是用戶目錄下的MSDEV配置文件從舊系統(tǒng)遷移過(guò)來(lái)包含了損壞的窗口布局?jǐn)?shù)據(jù)。解決退出 MSDEV刪除%APPDATA%\Microsoft\MSDEV目錄下的全部?jī)?nèi)容讓 VC6 重新生成默認(rèn)配置。之后打開(kāi)“工具 - 選項(xiàng) - 目錄”重新把 include 路徑指到D:\VC6\VC98\Include庫(kù)路徑指到D:\VC6\VC98\Lib。如果你的 MFC 工程還引用了C:\WinDDK或平臺(tái) SDK要在這里一并加進(jìn)去。5.3 編譯時(shí)找不到mfc42u.lib或afxwin.h現(xiàn)象打開(kāi)一個(gè)老 MFC 工程編譯報(bào)錯(cuò)Cannot open include file: afxwin.h或者鏈接報(bào)錯(cuò)cannot open file mfc42u.lib。原因VC6 默認(rèn)安裝時(shí)沒(méi)有裝“MFC 庫(kù)源碼和頭文件”。自定義安裝里“Microsoft Visual C 6.0”組件下有子選項(xiàng)叫“VC 運(yùn)行時(shí)庫(kù)”和“MFC 類庫(kù)”很多人為了省空間取消掉了。另外Unicode 版本的 MFC 庫(kù)是mfc42u.lib如果你的項(xiàng)目是 Unicode 字符集而安裝時(shí)沒(méi)有選擇“Unicode 支持”就會(huì)找不到這個(gè)文件。解決重新運(yùn)行安裝程序選擇“添加/刪除組件”在“VC 運(yùn)行時(shí)庫(kù)”里勾選所有子項(xiàng)包括 Unicode 版 MFC。補(bǔ)裝完成后打開(kāi)“工具 - 選項(xiàng) - 目錄”確認(rèn)以下路徑存在$(VC6)\VC98\Include $(VC6)\VC98\MFC\Include $(VC6)\VC98\MFC\Lib$(VC6)是 VC6 安裝根目錄。如果你的機(jī)器上有多個(gè)版本 Visual Studio 并存還要注意環(huán)境變量INCLUDE里是否被新版 SDK 搶占了導(dǎo)致afxwin.h走了錯(cuò)誤的搜索順序。5.4 生成的老程序在 Win10 上雙擊沒(méi)反應(yīng)現(xiàn)象VC6 編譯通過(guò)exe 也生成了但在 Win10 上雙擊沒(méi)有任何反應(yīng)任務(wù)管理器里閃一下進(jìn)程就消失。原因最常見(jiàn)的是動(dòng)態(tài)鏈接了 VC6 的運(yùn)行庫(kù)MSVCRT40.dll或MSVCP60.dll而 Win10 原版系統(tǒng)不帶這兩個(gè)庫(kù)。另一個(gè)原因是程序調(diào)用了老版本 API比如某些驅(qū)動(dòng)安裝工具會(huì)直接拋異常。解決回到工程設(shè)置把“運(yùn)行時(shí)庫(kù)”改為“多線程 (/MT)”編譯時(shí)加上/MT參數(shù)盡量讓 CRT 和 MFC 靜態(tài)鏈接。如果程序仍然沒(méi)有反應(yīng)在命令行里手動(dòng)運(yùn)行一次看有沒(méi)有彈出錯(cuò)誤對(duì)話框沒(méi)有對(duì)話框就用where查看依賴where /r C:\Windows\System32 msvcp60.dllWin10 的 System32 目錄裝的是新版本運(yùn)行庫(kù)VC6 的動(dòng)態(tài)庫(kù)對(duì)應(yīng)文件在C:\Windows\SysWOW64\。如果你不想改工程屬性簡(jiǎn)單做法是把msvcp60.dll和mfc42.dll從別的機(jī)器或 VC6 安裝目錄里復(fù)制到 exe 同目錄這種本地 DLL 方式控制在單機(jī)環(huán)境上是可行的。5.5 重裝系統(tǒng)后再裝 VC6舊工程提示“source files are not compatible”現(xiàn)象Win10 系統(tǒng)重裝完后重新安裝了 VC6打開(kāi)以前能編譯的老工程彈窗提示部分.cpp文件不被當(dāng)前編譯器識(shí)別或者打開(kāi)源碼列表時(shí)文件內(nèi)容全是亂碼。原因VC6 的工程文件.dsp里記錄了絕對(duì)路徑和文件編碼標(biāo)簽。重裝系統(tǒng)后用戶目錄變了或者系統(tǒng)區(qū)域設(shè)置里的“UTF-8 提供全球語(yǔ)言支持”選項(xiàng)被打開(kāi)VC6 的老文本編輯器把 UTF-8 源碼誤判成 ANSI 編碼。解決關(guān)閉 Win10“區(qū)域 - 管理語(yǔ)言設(shè)置 - 更改系統(tǒng)區(qū)域設(shè)置”中的“Beta 版: 使用 Unicode UTF-8 提供全球語(yǔ)言支持”。這個(gè)選項(xiàng)一開(kāi)VC6 的編輯器幾乎必亂碼。改完重啟后再打開(kāi)工程重新設(shè)置一次源碼文件目錄。.dsp里記錄的舊絕對(duì)路徑如果失效直接手動(dòng)用“工程 - 插入工程 - 文件”把源碼重新添加一次保留原編譯選項(xiàng)所有文件都能照常進(jìn)入編譯循環(huán)。6. 把裝好的 VC6 調(diào)成順手狀態(tài)驗(yàn)證腳本與兩個(gè)小設(shè)置6.1 最小驗(yàn)證一個(gè)帶 MFC 的 HelloWorld環(huán)境變量和路徑都配置好后不要急著打開(kāi)老工程先跑一個(gè)最小驗(yàn)證確認(rèn)這套 VC6 在 Win10 上是“真的可用”不是“裝著好看”。我自己會(huì)拷貝一個(gè)最小 MFC 程序到工作目錄命令行編譯// hello.cpp #include afxwin.h class CMyApp : public CWinApp { public: virtual BOOL InitInstance(); }; class CMyFrame : public CFrameWnd { public: CMyFrame() { Create(NULL, _T(VC6 on Win10)); } }; BOOL CMyApp::InitInstance() { m_pMainWnd new CMyFrame(); m_pMainWnd-ShowWindow(m_nCmdShow); return TRUE; } CMyApp theApp;然后編譯call D:\VC6\VC98\Bin\Vcvars32.bat cl /nologo /G6 /MT /O1 /W3 hello.cpp /link user32.lib注意 MFC 程序不能直接用cl裸編譯這里只是個(gè)最小驗(yàn)證思路。實(shí)際工程還是要在 IDE 里建好 MFC 工程然后在“工程 - 設(shè)置 - 常規(guī) - Microsoft 基礎(chǔ)類”里把“使用 MFC”改成靜態(tài)庫(kù)。驗(yàn)證的目的是確認(rèn)afxwin.h能找到、MFC 庫(kù)能鏈接、生成程序能彈窗這三步都過(guò)了這臺(tái)機(jī)器的 VC6 環(huán)境才真正算能用。6.2 讓 VC6 不再亂建臨時(shí)文件默認(rèn)情況下 VC6 會(huì)把每一個(gè)打開(kāi)的工程都生成.ncb、.opt、.clw三個(gè)中間文件其中.ncb是 IntelliSense 的數(shù)據(jù)庫(kù)在老硬盤(pán)上極易損壞而且 Win10 的搜索索引每次都會(huì)把它當(dāng)新文件掃描一遍導(dǎo)致 IDE 卡頓。我習(xí)慣在工程文件旁邊放一個(gè)批處理每次清理構(gòu)建結(jié)果時(shí)順手把這些臨時(shí)文件刪掉del /q *.ncb *.opt *.clw *.plg *.pch *.obj *.pdb 2nul這段命令不刪除源碼和.dsp工程文件只清編譯器產(chǎn)生的過(guò)程文件。如果哪天 VC6 打開(kāi)工程時(shí)異??ㄋ老冗\(yùn)行一次這個(gè)清理絕大多數(shù)情況下能恢復(fù)正常。注意刪除.pch會(huì)觸發(fā)一次全量重建所以只在確認(rèn)需要時(shí)運(yùn)行。6.3 把編譯選項(xiàng)預(yù)設(shè)成默認(rèn)值最后我會(huì)在“工程 - 設(shè)置 - C/C”里做一處全局修改把“優(yōu)化”默認(rèn)從“最大化速度 (/O2)”改成“最小體積 (/O1)”并把“代碼生成 - 運(yùn)行時(shí)庫(kù)”改成“多線程 (/MT)”。這樣新建的舊風(fēng)格工程就不會(huì)因?yàn)閮?nèi)存布局變化在 Win10 上產(chǎn)生兼容性隱患。很多時(shí)候 VC6 在 Win10 上不是不能用而是被上面講到的各種小問(wèn)題卡在半路上。真正回到命令行后編譯器本身相當(dāng)穩(wěn)定我甚至用它維護(hù)過(guò)連續(xù)運(yùn)行三年的采集程序。最后再說(shuō)個(gè)習(xí)慣每次重裝系統(tǒng)后我都會(huì)先把 Win10 的“自動(dòng)更新驅(qū)動(dòng)”暫停再裝 VC6否則系統(tǒng)會(huì)在安裝過(guò)程中自動(dòng)回滾顯卡或 HID 驅(qū)動(dòng)導(dǎo)致 MSDEV 的窗口渲染出問(wèn)題。這些坑如果你提前預(yù)到能省下一整天時(shí)間去網(wǎng)上搜“visual c6.0 兼容 win10 有沒(méi)有救”。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取