winapi — перечисление аккумуляторных устройств c ++ windows

Я использую Windows API для получения различной информации об оборудовании, такой как использование процессора и батареи. Я пытался получить имена названий устройств батареи, следуя этому руководству http://msdn.microsoft.com/en-us/library/windows/desktop/bb204769%28v=vs.85%29.aspx но я застрял, когда доберусь сюда.

#define INITGUID
#include<windows.h>
#include<batclass.h>
#include<setupapi.h>
#include<devguid.h>

using namespace std;

int main()
{
HDEVINFO hdev = SetupDiGetClassDevs(&GUID_DEVCLASS_BATTERY, 0, 0, DIGCF_PRESENT
| DIGCF_DEVICEINTERFACE);
}

но я получаю следующую ошибку

[Linker error] C:\Users\Owner\AppData\Local\Temp\ccTMeaf9.o:Untitled1.cpp:(.text+0x28): undefined reference to `__imp_SetupDiGetClassDevsA' collect2: ld returned 1 exit status

Я новичок в C ++, поэтому я могу упустить что-то очевидное, но это то, как они это делают в руководстве. Будем признательны любому совету.

1

Решение

В документации говорилось, что GUID на самом деле определен в devguid.h. Кроме того (если вы еще не делаете это в другом исходном файле), вам нужно

#define INITGUID

перед включением BatClass.h и devguid.h. Вы получите неопределенную символьную ошибку во время ссылки, если у вас ее нет один раз в проекте, и многократную символьную ошибку во время ссылки, если у вас их больше одного.

3

Другие решения

Это определено в devguid.h в моих заголовках mingw / GCC и моей старой копии MSSDK.

Попробуйте добавить это:

#include <devguid.h>
0

Следующий код компилируется здесь, на DevCPP:

#define INITGUID
#include <windows.h>
#include<ddk\batclass.h>
#include<setupapi.h>

int main() {
{
HDEVINFO hdev = SetupDiGetClassDevs(&GUID_DEVICE_BATTERY, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
}

Заметка GUID_DEVICE_BATTERY.

Для того, чтобы получить правильное связывание, вы должны добавить в проект параметры | Параметры | Компоновщик библиотеки libsetupapi.a

Программа не проверена для запуска. Он только правильно компилируется.

0
По вопросам рекламы [email protected]