情況描述:接收遠程隊友的C++代碼,基於vc120工具集(VS2013),而我的機器上是VS2015,需要安裝VS2013(只選MFC,除主程序與MFC外其余的組件全部卸掉)。然後開始編譯,提示 MSB803 錯誤:說多字節已經被棄用。
因此需要下載 vs_mbcsmfc.exe,下載後安裝失敗。
再安裝,還是失敗。查看日志文件無果,百度,bing,微軟社區搜索無果,幾近絕望。啟用PlanB,那就是把工程屬性改為Unicode,手動把代碼中的所有字符串用 _T() 宏包裹起來,同時,把 stoi 更改為 _wtoi,同時寫了個公共類,用於把 CString類型轉換為 char* 類型,以滿足底層調用約束。
搞了三天,最後編譯仍然出錯,提示找不到 mfc120d.lib,mfcs120d.lib,手動在設置裡忽略,仍是報錯,提示鏈接錯誤。
C++的虐心啊。
休息半天之後,我決定重新再來一遍,從下載 vs_mbcsmfc.exe 開始,這次居然安裝成功了,不知道該哭還是笑。官網提示文件大小有64M,而我幾天前下載得到的文件是50M,居然可以運行。
然後順利編譯。
高興不了多久,又發現代碼中引用了一個第三方的lib,貌似是作者自己寫的,使用了一個工廠方法,返回一個基類,調用其虛函數,提示 “函數XXX的地址不存在,可能是編譯器優化的結果”。
不管怎樣,代碼能編譯了,這就是進展吧。