VS2013中的VC ++代码生成

时间:2015-10-01 09:11:19

标签: visual-c++ visual-studio-2013 build mfc legacy-code

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

  

错误MSB8031:为非Unicode字符集构建MFC项目   已弃用。您必须将项目属性更改为Unicode或   下载一个额外的库。

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

这解决了我构建代码的问题,因为我开始接收错误inappropraite Type Casting错误,用于我的所有消息框和其他用户定义的字符串: MessageBox的示例代码:

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

错误:错误C2664:' int MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT)' :   无法从' String'转换参数2到LPCWSTR'。

这一切都适用于VS2010。

我可以在VS2013中打开或关闭任何设置,这样我就不应该接收这种类型的转换或者我是否必须为每个错误手动输入转换。

1 个答案:

答案 0 :(得分: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(这不是一件容易的事),您可能希望继续使用MBCS,which it is possible to do下载可选的Multibyte Library for VS2013并更改您的将项目属性恢复到原来的状态。