繁体   English   中英

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

[英]SHGetSpecialFolderPath cannot convert parameter 2 from 'char [260]' to 'LPWSTR'

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

错误:无法将参数2从'char [260]'转换为'LPWSTR'OS Windows 7 64位和Visual Studio2010。我想在Windows XP和Win7中都运行此代码。

您要针对Unicode而不是ANSI。 但是,您正在传递ANSI缓冲区。 您可以通过多种方法解决此问题:

  1. 使用Unicode缓冲区: wchar_t buffer[MAX_PATH]
  2. 在项目配置中切换到定位ANSI。
  3. 直接调用ANSI函数。 它称为SHGetSpecialFolderPathA

我的偏好是使用Unicode缓冲区,选项1。

如果要同时构建Unicode和ANSI / MBCS,请使用TCHAR而不是char

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM