Ну, во-первых, этот пример кода написан плохо.Это смешение таких вещей, как PWSTR
с LPTSTR
.PWSTR
- указатель на строку широких символов, тогда как LPTSTR
- указатель на строку символов или строку широких символов в зависимости от настроек проекта.
Поскольку в коде используется широкоформатная строкастроки в некоторых местах и вызывающие функции, оканчивающиеся на W
, вам нужно настроить проект на использование широких символьных строк для всего.У меня нет VS 2017, но в VS 2015 вы настраиваете свой проект для использования строк широких символов, устанавливая Проект-> Свойства-> Общие-> Набор символов на Использовать набор символов Unicode .
РЕДАКТИРОВАТЬ : ответить на ваш комментарий.
Проблема, с которой вы столкнулись, связана в первую очередь со строкой 13:
PWSTR g_pszAppName;
Этоявляется одной из двух переменных, объявленных явно как указатель на строку широких символов.Вы можете попытаться изменить код, чтобы он не использовал строки широких символов, следующим образом:
Измените строку 13 на:
PTSTR g_pszAppName = _T("MyApp"); // Put your app name here
Удалите эти 2 строки (330 и 331):
PWSTR* ppArgV = CommandLineToArgvW(lpstrCmdLine, &nArgC);
g_pszAppName = ppArgV[0];
Вы также можете изменить Проект-> Свойства-> Общие-> Набор символов обратно на то, что было изначально.