SHGetSpecialFolderPath无法将参数2从'char [260]'转换为'LPWSTR'

时间:2012-02-01 16:57:02

标签: c++ winapi

char buffer[MAX_PATH];
SHGetSpecialFolderPath(NULL,buffer, CSIDL_INTERNET,FALSE );

错误:无法将参数2从'char [260]'转换为'LPWSTR' 操作系统Windows 7 64位和Visual Studio 2010.我想在Windows XP和Win7中运行此代码。

2 个答案:

答案 0 :(得分:4)

您正在构建定位Unicode而不是ANSI。但是您正在传递ANSI缓冲区。您可以通过多种方式解决此问题:

  1. 使用Unicode缓冲区:wchar_t buffer[MAX_PATH]
  2. 切换到项目配置中的ANSI目标。
  3. 直接调用ANSI函数。它被称为SHGetSpecialFolderPathA
  4. 我的偏好是使用Unicode缓冲区,选项1。

答案 1 :(得分:0)

如果您要同时使用Unicode和ANSI / MBCS构建,请使用TCHAR代替char

TCHAR buffer[MAX_PATH];
SHGetSpecialFolderPath(NULL, buffer, CSIDL_INTERNET, FALSE);