c++ - 枚举电池设备 c++ windows

标签 c++ winapi battery

我正在使用 Windows API 获取各种硬件信息,例如 CPU 使用情况和电池信息。我一直在尝试按照本指南获取电池设备名称的名称 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++ 的初学者,所以我可能遗漏了一些明显的东西,但他们在指南中是这样做的。任何建议都会很棒。

最佳答案

文档撒谎,GUID 实际上是在 devguid.h 中定义的。另外(如果你还没有在另一个源文件中这样做)你需要

#define INITGUID

在包含 BatClass.h 和 devguid.h 之前。如果您的项目中没有一次,您将在链接时收到一个 undefined symbol 错误,如果您有多个定义的符号,您将在链接时收到一个多重定义的符号错误。

关于c++ - 枚举电池设备 c++ windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14762154/

相关文章:

c++ - 奇怪的 closesocket() 行为

c++ - 提振 spirit ,为什么需要 as<> 指令? (又名帮助我理解属性兼容性规则)

c++ - 如何在 Vi 和 Emacs 中使用相同缩进样式的 C++ 代码?

c++ - MS Detours Express 3.0 没有正确挂接 CreateFile win32 API 函数

android - 经常观察电池?

iOS 12 – 获取 iPhone 电池循环计数的最简单方法

c++ - 制作对象的多个版本

c++ - 导入的库函数可以在内存中移动吗

c++ - 使用节点和复选框创建 TreeView

anylogic - 将电池管理添加到任何逻辑模型