2015-10-01 72 views
1

我想在VS2013中創建VC++遺留代碼。起初,我不能夠建立,因爲錯誤的代碼:在VS2013中創建VC++代碼

error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library.

爲了解決這個問題,我已經改變了以下設置: 項目 - >屬性 - >配置屬性 - >常規 - >項目默認 - >字符設置 - >使用Unicode字符集。

這解決了我的大樓裏,我開始recieving錯誤inappropraite類型轉換誤差爲我所有的消息框和其他用戶自定義字符串代碼的問題: 對MessageBox的示例代碼:

MessageBox (NULL, "Some String","Some String", MB_OK | MB_ICONSTOP); 

Error: error C2664: 'int MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT)' : cannot convert argument 2 from 'String' to 'LPCWSTR'.

這一切都適用於VS2010。

是否有任何設置可以在VS2013中打開或關閉,這樣我就不會收到這樣的類型轉換,或者是否必須爲每個錯誤手動輸入轉換類型。

回答

2

您已將項目設置爲使用Unicode,因此您需要將寬字符串作爲文字。使用MFC,您可以使用宏_T()根據您的項目設置自動執行正確的操作。

對於你的榜樣,試試這個:

MessageBox (NULL, _T("Some String"), _T("Some String"), MB_OK | MB_ICONSTOP); 

在一個Unicode生成宏將擴大,使文字寬字符:

MessageBox (NULL, L"Some String", L"Some String", MB_OK | MB_ICONSTOP); 

_T()宏是相同的_TEXT宏而這些和其他Unicode提示是documented on MSDN

如果你有太多的代碼,一切爲Unicode轉換(這是不平凡的),你可能希望通過下載可選Multibyte Library for VS2013和改變你的項目屬性回到他們原來的方式進行使用MBCS上,which it is possible to do

+1

謝謝,我下載了MFC的多字節字符集庫並安裝了它。有效。 Manky再次感謝 – WENzER