Qt-解决异常报错“QAxBase::setControl: requested control XXX could not be instantiated”

简介: Qt-解决异常报错“QAxBase::setControl: requested control XXX could not be instantiated”

问题说明

      使用Qt开发的过程中,QAxObject是经常用到的一个类,用于操作Windows中各种COM接口,进而实现各类功能。


      WbemScripting.SWbemLocator是我想要通过QAxObject访问的对象,使用下方代码,一般来说会完成实例化并继续执行后续操作。

QAxObject *objIWbemLocator = new QAxObject("WbemScripting.SWbemLocator");

   然而很多人会触发下方错误提示,翻译过来就是无法实例化请求的对象。

      经过我多方调研,查清了问题缘由,是因为COM未初始化导致。QAxObject既然用于操作COM接口,那COM的初始化也显得至关重要。

      解决问题的办法如下所示。

解决方案

      QleInitialize函数是一个Windows API函数。它的作用是在当前单元(apartment)初始化组件对象模型(COM)库,将当前的并发模式标识为STA(single-thread apartment——单线程单元),并启用一些特别用于OLE技术的额外功能。除了CoGetMalloc和内存分配函数,应用程序必须在调用COM库函数之前初始化COM库。

      我们在实例化前调用QleInitialize函数来初始化COM,如下所示。并在操作后调用OleUninitialize函数取消COM初始化。至此,该问题解决。

OleInitialize(0);
QAxObject *objIWbemLocator = new QAxObject("WbemScripting.SWbemLocator");
// 系列操作
OleUninitialize();

      近期在回顾用Qt开发的许多项目,对比较好或者我觉得会有人需要的内容,会同步更新在CSDN,希望能帮助到其他人。近几年受疫情影响,大家的生活和工作都十分不易,希望未来一年比一年好,我们一同努力!


      如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

相关文章
|
5月前
|
小程序
小程序踩坑:Setting data field "xxxx" to undefined is invalid.
小程序踩坑:Setting data field "xxxx" to undefined is invalid.
92 0
微信分享报错 wxlog:Error:fail to load Keychain status:-25300 解决办法
微信分享报错 wxlog:Error:fail to load Keychain status:-25300 解决办法
1729 0
|
Java
Appium问题解决方案(8)- selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not sign with default certificate.
Appium问题解决方案(8)- selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not sign with default certificate.
893 0
Appium问题解决方案(8)- selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not sign with default certificate.
|
4月前
|
JavaScript
Uncaught runtime errors: × ERROR Avoided redundant navigation to current location: “/xxx“.
Uncaught runtime errors: × ERROR Avoided redundant navigation to current location: “/xxx“.
60 0
|
11月前
|
开发者 iOS开发
Xcode运行报错The operation couldn’t be completed. Unable to launch xxx because it has an invalid code...
Xcode运行报错The operation couldn’t be completed. Unable to launch xxx because it has an invalid code...
648 0
|
Java Android开发
Bad method handle type 7异常解决
在利用androidx版本写demo时,在添加了一些依赖后,遇到了`java.lang.ClassNotFoundException`bug,这就很奇怪了,我就添加rxjava3的依赖,就给我报这个错误。
|
Android开发
【错误记录】Tinker 热修复示例运行报错 ( patch receive fail: /storage/emulated/0/patch_signed_7zip.apk, code: -2)
【错误记录】Tinker 热修复示例运行报错 ( patch receive fail: /storage/emulated/0/patch_signed_7zip.apk, code: -2)
399 0
【错误记录】Tinker 热修复示例运行报错 ( patch receive fail: /storage/emulated/0/patch_signed_7zip.apk, code: -2)
如何处理错误消息Unable to install breakpoint due to missing line number attributes
如何处理错误消息Unable to install breakpoint due to missing line number attributes
158 0
如何处理错误消息Unable to install breakpoint due to missing line number attributes

热门文章

最新文章