не могу преобразовать параметр из char [#] в LPWSTR - PullRequest
3 голосов
/ 22 февраля 2011

Когда я компилирую этот код в Visual C ++, я получил следующую ошибку.Может помочь мне решить эту проблему ..

DWORD nBufferLength = MAX_PATH;
char szCurrentDirectory[MAX_PATH + 1];
GetCurrentDirectory(nBufferLength, szCurrentDirectory); 
szCurrentDirectory[MAX_PATH +1 ] = '\0';

Сообщение об ошибке:

Error   5   error C2664: 'GetCurrentDirectoryW' : cannot convert parameter 2 from 'char [261]' to 'LPWSTR'  c:\car.cpp

Ответы [ 2 ]

5 голосов
/ 22 февраля 2011

Ваша программа настроена для компиляции в формате Unicode.Вот почему GetCurrentDirectory - это GetCurrentDirectoryW, который ожидает LPWSTR (wchar_t*).

GetCurrentDirectoryW ожидает wchar_t вместо char массива.Вы можете сделать это, используя TCHAR, который, как и GetCurrentDirectory, зависит от настройки Юникода и всегда представляет соответствующий тип символа.

Не забудьте добавить в свой '\0' знак L в порядкесделать символ буквальным Unicode тоже!

5 голосов
/ 22 февраля 2011

Кажется, вы определили UNICODE, _UNICODE флаги компилятора. В этом случае вам нужно изменить тип szCurrentDirectory с char на TCHAR.

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