【发布时间】:2012-02-01 16:57:01
【问题描述】:
char buffer[MAX_PATH];
SHGetSpecialFolderPath(NULL,buffer, CSIDL_INTERNET,FALSE );
错误:无法将参数 2 从 'char [260]' 转换为 'LPWSTR' 操作系统 windows 7 64 位和 Visual Studio 2010。我想在 windows XP 和 Win7 中运行此代码。
【问题讨论】:
char buffer[MAX_PATH];
SHGetSpecialFolderPath(NULL,buffer, CSIDL_INTERNET,FALSE );
错误:无法将参数 2 从 'char [260]' 转换为 'LPWSTR' 操作系统 windows 7 64 位和 Visual Studio 2010。我想在 windows XP 和 Win7 中运行此代码。
【问题讨论】:
您正在构建目标 Unicode 而不是 ANSI。但是您正在传递一个 ANSI 缓冲区。您可以通过多种方式解决此问题:
wchar_t buffer[MAX_PATH]。SHGetSpecialFolderPathA。我的偏好是使用 Unicode 缓冲区,选项 1。
【讨论】:
如果您想同时构建 Unicode 和 ANSI/MBCS,请使用 TCHAR 而不是 char:
TCHAR buffer[MAX_PATH];
SHGetSpecialFolderPath(NULL, buffer, CSIDL_INTERNET, FALSE);
【讨论】: