2015-10-01 42 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