RegSetValueEx выдает ошибку char * несовместима с LPCWSTR - PullRequest
0 голосов
/ 30 мая 2011

Существует функция, которая копирует значение в реестр, используя

RegSetValueEx(hKey, theName, 0, REG_DWORD, (unsigned char *)&value, sizeof(value));

theName переданный вызывающим абонентом является char *

Я получаю ошибку компиляции:

Аргумент типа char * несовместим с LPCWSTR

Почему я получаю эту ошибку?

Я скопировал некоторый код, который его использует (и я знаю, что он успешно собирается), и собрал его сам.

Изменилась ли функция или настройки моего проекта испорчены? Я не знаю, какая версия VS код был создан.

1 Ответ

4 голосов
/ 30 мая 2011

Это потому, что Windows была операционной системой Unicode в течение последних 18 лет. Его тип строки по умолчанию имеет кодировку utf-16, wchar_t * в вашем коде. Или std :: wstring. Или LPCWSTR, typedef, используемый в заголовках Windows. Обратите внимание на распространенность «w», это означает «Широкий».

Он по-прежнему поддерживает строки char *, вы должны использовать RegSetValueExA (). Обратите внимание на добавленное «А». Это также настройка проекта, позволяющая вашей программе использовать старый многобайтовый API. Проект + Свойства, Общие, Набор символов. Избегайте маркетинга для других 5 миллиардов клиентов, когда вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...