gpt4 book ai didi

c++ - UINT GetDriveTypeA(LPCSTR )': cannot convert argument 1 from ' LPCWSTR' 到 'LPCSTR' ?

转载 作者:行者123 更新时间:2023-11-28 01:21:50 29 4
gpt4 key购买 nike

我收到这个错误

UINT GetDriveTypeA(LPCSTR)': cannot convert argument 1 from 'LPCWSTR' to 'LPCSTR'

下面是我的代码。

void USBDrives::add()    
{
QDir driveList;
for(QFileInfo drive : driveList.drives())
{
QString driveLetter = drive.absoluteFilePath();
LPCWSTR driveType = (const wchar_t*) driveLetter.utf16();
if(GetDriveType(driveType) == 2)
{
emit sendUSBDriveLetter(driveLetter);
}
}
}

最佳答案

在 Windows 上,几乎所有函数都有两个版本:采用“普通”窄字符字符串的 ASCII 版本,并且它们具有所有 A 后缀(如 GetDriveTypeA);以及宽字符“Unicode”函数,它们由它们的 W 后缀标识。

您可以通过定义 UNICODE 宏在它们之间进行选择,这将使非后缀函数使用宽字符函数,否则(如果未定义宏)窄字符函数使用函数。

有两种方法可以解决您的问题:

  1. 明确使用宽字符函数GetDriveTypeW;或者
  2. 定义 UNICODE 宏以强制所有 Windows API 函数使用宽字符函数。

如果您只使用几个宽字符函数,请使用第一个解决方案(显式使用宽字符函数),否则定义宏(解决方案 2)会更简单。

关于c++ - UINT GetDriveTypeA(LPCSTR )': cannot convert argument 1 from ' LPCWSTR' 到 'LPCSTR' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55823179/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com