Visual c++ VC++;VS2013中的代码构建

Visual c++ VC++;VS2013中的代码构建,visual-c++,visual-studio-2013,build,mfc,legacy-code,Visual C++,Visual Studio 2013,Build,Mfc,Legacy Code,我正在尝试在VS2013中构建VC++遗留代码。最初,由于错误,我无法生成代码: 错误MSB8031:为非Unicode字符集生成MFC项目 不推荐使用。必须将项目属性更改为Unicode或Unicode 下载一个附加库 为了解决此问题,我更改了以下设置: 项目->属性->配置属性->常规->项目默认->字符集->使用Unicode字符集 这解决了我在构建代码时遇到的问题,即当我开始接收错误时,我的所有消息框和其他用户定义字符串的类型转换错误: MessageBox的示例代码: MessageB

我正在尝试在VS2013中构建VC++遗留代码。最初,由于错误,我无法生成代码:

错误MSB8031:为非Unicode字符集生成MFC项目 不推荐使用。必须将项目属性更改为Unicode或Unicode 下载一个附加库

为了解决此问题,我更改了以下设置: 项目->属性->配置属性->常规->项目默认->字符集->使用Unicode字符集

这解决了我在构建代码时遇到的问题,即当我开始接收错误时,我的所有消息框和其他用户定义字符串的类型转换错误: MessageBox的示例代码:

MessageBox (NULL, "Some String","Some String", MB_OK | MB_ICONSTOP);
错误:错误C2664:'int MessageBoxW(HWND、LPCWSTR、LPCWSTR、UINT)': 无法将参数2从“字符串”转换为“LPCWSTR”

这一切都在为VS2010工作


在VS2013中是否有任何设置可以打开或关闭,这样我就不会收到此类类型转换,或者我必须为每个错误手动键入类型转换。

您已将项目设置为使用Unicode,因此需要使用宽字符字符串作为文本。使用MFC,您可以使用
\u 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);
\u T()
宏与
\u TEXT
宏相同,这些和其他Unicode提示都是相同的


如果您有太多的代码无法将所有内容转换为Unicode(这不是小事),您可能希望继续使用MBCS,方法是下载可选内容并将项目属性更改回原来的方式。

谢谢,我下载了MFC的多字节字符集库并安装了它。成功了。曼基,再次感谢你