2015-10-01 2 views
1

Я пытаюсь создать старый код VC++ в VS2013. Изначально я не был в состоянии построить код из-за ошибки:VC++ Code Build in VS2013

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.

Для решения этой проблемы я изменил следующие параметры: Проект-> свойства-> Конфигурация свойства-> Общие-> Project default-> Character Set -> Использовать набор символов Unicode.

Это разрешило мою проблему построения кода, где, как я начал ПОЛУЧАТЬ ошибка позиционирования 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, макрос будет расширяться, чтобы литералы широкого CHARS:

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 и изменив свойства проекта обратно, как они были первоначально.

+1

Спасибо, я загрузил Multibyte Character Set Library для MFC и установил его. Это сработало. Manky Еще раз спасибо – WENzER