Qt调用头文件setupapi.h的函数SetupDiGetClassDevs()编译出错

博主用QtCreator集成开发环境和MinGW32编译器编译Windows下的API函数,即头文件setupapi.h中的函数SetupDiGetClassDevs()时,编译出错。

1.1问题

错误如下:

D:\QtProject\test1\exam1\widget.cpp:20: error: undefined reference to `_imp__SetupDiGetClassDevsW@16'

这个错误莫名其妙,因为博主关联了Windows API调用头文件#include <windows.h>和#include <setupapi.h>,但是编译时仍然出错,博主查看了msdn用没找出错误在哪里。后来在一个群里,终于找到了解决方案,出现这个错误的原因是因为没有关联系统库,所以解决办法是关联setupapi的系统库就行。

1.2解决方案

下面是解决方案,给工程添加系统库,步骤如下图所示:

 

 

编译后,结果如下所示

1.3总结

由上述结果可知,添加了系统静态库后,可以正常调用Windows系统api函数中setupapi.h头文件内的所有函数。

在qt中调用Windows API函数有时需要自己关联系统库时,不仅仅需要相关的头文件,有些还需要自己关联系统库,就跟本文示例一样;但是有些系统函数在qt下调用时不需要自己关联系统库。

至于是否需要,可以直接查看微软的MSDN相关函数,如下面所示是msdn对函数SetupDiGetClassDevs()用法的描述:

网址:https://docs.microsoft.com/zh-cn/windows/desktop/api/setupapi/nf-setupapi-setupdigetclassdevsw

 

 

参考内容:

https://docs.microsoft.com/zh-cn/windows/desktop/api/setupapi/nf-setupapi-setupdigetclassdevsw(参考:MSDN关于函数SetupDiGetClassDevs()的讲解)

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三公子Tjq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值