无法将参数从char [#]转换为LPWSTR

kar*_*ari 3 visual-c++

当我在Visual C++中编译此代码时,我得到以下错误.可以帮我解决这个问题..

DWORD nBufferLength = MAX_PATH;
char szCurrentDirectory[MAX_PATH + 1];
GetCurrentDirectory(nBufferLength, szCurrentDirectory); 
szCurrentDirectory[MAX_PATH +1 ] = '\0';
Run Code Online (Sandbox Code Playgroud)

错误信息:

Error   5   error C2664: 'GetCurrentDirectoryW' : cannot convert parameter 2 from 'char [261]' to 'LPWSTR'  c:\car.cpp
Run Code Online (Sandbox Code Playgroud)

Nav*_*een 5

看来你已经定义了UNICODE, _UNICODE编译器标志.在这种情况下,你需要改变的类型,szCurrentDirectorycharTCHAR.


Tim*_*mbo 5

您的程序配置为编译为unicode.这就是为什么GetCurrentDirectory是GetCurrentDirectoryW,它需要a LPWSTR(wchar_t*).

GetCurrentDirectoryW需要一个wchar_t而不是char数组.你可以使用TCHAR,像GetCurrentDirectory一样 - 取决于unicode设置,并始终表示适当的字符类型.

不要忘记在前面'\0'添加一个L,以便制作char字面的unicode!