问题描述
当我在 Visual C++ 中编译此代码时,出现以下错误.可以帮我解决这个问题..
When I compile this code in Visual C++, I got the below error. Can help me solve this issue..
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*
).
Your program is configured to be compiled as unicode. Thats why GetCurrentDirectory is GetCurrentDirectoryW, which expects a LPWSTR
(wchar_t*
).
GetCurrentDirectoryW 需要 wchar_t
而不是 char
数组.您可以使用 TCHAR
执行此操作,它与 GetCurrentDirectory 类似,取决于 unicode 设置并始终表示适当的字符类型.
GetCurrentDirectoryW expects a wchar_t
instead of char
array. You can do this using TCHAR
, which - like GetCurrentDirectory - depends on the unicode setting and always represents the appropriate character type.
不要忘记在 '\0'
前面加上 L
以便使字符文字也成为 unicode!
Don't forget to prepend your '\0'
with an L
in order to make the char literal unicode, too!
这篇关于无法将参数从 char[#] 转换为 LPWSTR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!