当我在 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

最佳答案

您的程序配置为编译为 unicode。这就是 GetCurrentDirectory 是 GetCurrentDirectoryW 的原因,它需要一个 LPWSTR ( wchar_t* )。

GetCurrentDirectoryW 需要 wchar_t 而不是 char 数组。您可以使用 TCHAR 执行此操作,它与 GetCurrentDirectory 一样取决于 unicode 设置并始终表示适当的字符类型。

不要忘记在您的 '\0' 前面加上 L 以使 char 文字也成为 unicode !

关于visual-c++ - 无法将参数从 char[#] 转换为 LPWSTR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5075423/

10-11 16:27