【问题标题】:SHGetSpecialFolderPath cannot convert parameter 2 from 'char [260]' to 'LPWSTR'SHGetSpecialFolderPath 无法将参数 2 从“char [260]”转换为“LPWSTR”
【发布时间】: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 中运行此代码。

【问题讨论】:

    标签: c++ winapi


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-20
        • 2021-02-14
        • 2011-10-15
        • 1970-01-01
        相关资源
        最近更新 更多