TCHAR несовместим с LPSTR - PullRequest
       1

TCHAR несовместим с LPSTR

0 голосов
/ 15 февраля 2019

Тип аргумента TCHAR несовместим с типом параметра LPSTR.

Как мне решить эту проблему?Я пытался конвертировать / приводить тип безрезультатно

void getHWID()
{
// GetVolumeInformationA
DWORD DriveSerial;

// GetComputerNameA
LPSTR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
DWORD size = sizeof(ComputerName) / sizeof(ComputerName[0]);
// OS GUID
HW_PROFILE_INFO hwProfileInfo;
DWORD OsGUID;
GetVolumeInformationA(0, nullptr, '\0', &DriveSerial, nullptr, nullptr, nullptr, 0);
GetComputerNameA(ComputerName, &size);
GetCurrentHwProfileA(&hwProfileInfo);
memcpy(&OsGUID, &hwProfileInfo.szHwProfileGuid, sizeof(hwProfileInfo.szHwProfileGuid)); 
};

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Вы должны использовать CHAR[] для ComputerName:

CHAR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
0 голосов
/ 15 февраля 2019

WinAPI использует CHAR, WCHAR и TCHAR.CHAR всегда отображается на нормальный char, WCHAR на wchar_t.

TCHAR зависит от настроек компилятора, однако: в UNICODE сборке он эквивалентен WCHAR ив не UNICODE до CHAR.

Аналогично, есть LPSTR, LPWSTR и LPTSTR, это указатели на соответствующие им XCHAR части счетчика (L ong P ointer).Вы всегда должны использовать соответствующие пары:

  • CHAR и LPSTR
  • WCHAR и LPWSTR
  • TCHAR и LPTSTR

Примечание: в моем личном коде я бы никогда не использовал эти бесполезные макросы *STR, вместо этого я бы напрямую использовал [W|T]CHAR [const]* ...

С приведенной выше информацией:

LPSTR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
// is equivalent to:
CHAR* ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
//  ^

Скорее всего, не то, что вы хотели ...

0 голосов
/ 15 февраля 2019

Изменить LPSTR ComputerName[MAX_COMPUTERNAME_LENGTH + 1]; на CHAR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];

LPSTR ComputerName[MAX_COMPUTERNAME_LENGTH + 1]; тип ComputerName - это LPSTR массив , но не LPSTR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...