VC++ VS2013 中的代码构建

VC++ Code Build in VS2013

我正在尝试在 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字符集。

这解决了我构建代码的问题,因为我开始收到所有消息框和其他用户定义字符串的类型转换错误错误: 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 中打开或关闭的设置,这样我就不会收到这种类型转换,或者我是否必须为每个错误手动类型转换。

您已将项目设置为使用 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(这不是微不足道的),您可能希望继续使用 MBCS,which it is possible to do by downloading the optional Multibyte Library for VS2013 并将您的项目属性更改回原来的方式。