QT 开发COM(ActiveX)组件基础介绍和方案验证

时间:2024-04-30 16:54:07

4.4.1 点击运行后,报错没有注册类

System.Runtime.InteropServices.COMException

  HResult=0x80040154

  Message=没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))

  Source=System.Windows.Forms

  StackTrace:

   at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)

   at System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)

   at System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)

   at System.Windows.Forms.AxHost.CreateInstance()

   at System.Windows.Forms.AxHost.GetOcxCreate()

   at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)

   at System.Windows.Forms.AxHost.CreateHandle()

   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)

   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)

   at System.Windows.Forms.AxHost.EndInit()

   at WindowsFormsApp4.Form1.InitializeComponent() in D:\VisionProject\VSWorkSpace\WinformWS\WindowsFormsApp4\WindowsFormsApp4\Form1.Designer.cs:line 64

   at WindowsFormsApp4.Form1..ctor() in D:\VisionProject\VSWorkSpace\WinformWS\WindowsFormsApp4\WindowsFormsApp4\Form1.cs:line 17

   at WindowsFormsApp4.Program.Main() in D:\VisionProject\VSWorkSpace\WinformWS\WindowsFormsApp4\WindowsFormsApp4\Program.cs:line 19

项目属性,生成的目标平台修改为x64。

4.4.2 控件已经成功添加到工具箱中,但未在活动设计器中启用

问题描述:Visual studio 2022 添加com组件到工具箱错误提示:

下列控件已经成功添加到工具箱中,但未在活动设计器中启用 ,请确认要添加的控件能够兼容当前设计器和.net framework 版本。

修改方法:

要选择上面这个Windows窗体应用(.NET Framework)

【Windows 窗体应用】的窗体属性中还有其他信息,目标框架:.NET Core 3.1

而【Windows 窗体应用(.NET Framework)】,其框架则是.NET Framework

这个.NET Core与 .NET Framework是完全不一样的东西:

  • .NET framework框架开发出来的应用只能在windows上运行。
  • .netcore 是开源的,开发出来的应用可以跨平台运行,比如运行在MAC,Linux上 。

而我们添加的COM组件,实际上是只应用于windows环境的技术,在一个非windows 的底层技术以及上层环境肯定就是不行的了。

4.4.3 引入控件报错

1.在工具箱中,拖入控件到UI中,会弹窗报错:

直接重新生成项目,也会报错:

生成的dll确实是64位的:

2.修改为x64平台(上述第二章的qt com dll也是基于x64编译的)后,编译正常,且AxActiveQTServer2Lib不再报错

五、最终代码demo

https://download.****.net/download/u011490813/89246081https://download.****.net/download/u011490813/89246081

参考资料

COM简介

COM - COM的简单介绍_com组件结构-****博客

windeployqt打包Qt应用程序(Com只注册了,还不够,需要通过windeploy发布依赖的文件):

windeployqt打包Qt应用程序_qt windeployqt 打包-****博客

Qt的进程间通信,以Active服务器的形式,手把手教你VS上进行Qt的COM、ActivedQt Server的开发,比保姆还保姆

https://www.cnblogs.com/Leventure/p/16971934.html

VS+QT插件创建qt 的ActiveQT Server工程踩过的坑_qt activeqt server-****博客