SHGetSpecialFolderPath не может преобразовать параметр 2 из «char [260]» в «LPWSTR» - PullRequest
1 голос
/ 01 февраля 2012
char buffer[MAX_PATH];
SHGetSpecialFolderPath(NULL,buffer, CSIDL_INTERNET,FALSE );

Ошибка: невозможно преобразовать параметр 2 из «char [260]» в «LPWSTR». ОС Windows 7 64 bit и Visual Studio 2010. Я хочу запустить этот код как в Windows XP, так и в Win7.

Ответы [ 2 ]

4 голосов
/ 01 февраля 2012

Вы строите таргетинг на Unicode, а не на ANSI. Но вы передаете буфер ANSI. Вы можете исправить это несколькими способами:

  1. Использование буфера Unicode: wchar_t buffer[MAX_PATH].
  2. Переключитесь на настройку ANSI в конфигурации вашего проекта.
  3. Вызовите функцию ANSI напрямую. Это называется SHGetSpecialFolderPathA.

Я бы предпочел использовать буфер Unicode, вариант 1.

0 голосов
/ 02 февраля 2012

Если вы хотите встроить Unicode и ANSI / MBCS, используйте TCHAR вместо char:

TCHAR buffer[MAX_PATH];
SHGetSpecialFolderPath(NULL, buffer, CSIDL_INTERNET, FALSE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...