QT使用dumpcpp为COM生成h及cpp的方式,COM是C#的dll注册的

news2024/11/15 15:17:29

目录

1.C#的dll注册为COM,采用bat的方式

2.通过qt的dumpcpp来生成h及cpp文件

3.h文件和cpp文件处理。



台达数控系统的C#的dll

dumpcpp用的tlb文件

dumpcpp生成的原生h文件

dumpcpp生成的原生cpp

dump生成后的的原生cpp文件修改后的cpp文资源

dump生成后的的原生h文件修改后的h文资源

1.C#的dll注册为COM,采用bat的方式

采用C#的方式注册:

%windir%\Microsoft.NET\Framework64\v4.0.30319\Regasm CNCNetLib2.dll /tlb: CNCNetLib2.tlb /codebase

卸载COM

%windir%\Microsoft.NET\Framework64\v4.0.30319\Regasm CNCNetLib2.dll /tlb: CNCNetLib2.tlb /u /codebase

2.通过qt的dumpcpp来生成h及cpp文件

在qt的安装目录下找到dumpcpp.exe文件,然后安装shift调用powershell窗口(生成文件在dumpcpp路径下),也可直接在tlb文件所在目录打开powershell 窗口,直接通过 dumpcpp ,然后将tlb文件直接拉取到powershell窗口中即可。生成的文件就在tlb文件所在目录下。

然后输入 dumpcpp tlb文件路径  ,回车即可 tlb路径直接将tlb文件拉进窗口即可自动生成。之后在dumpcpp.exe文件所在路径下将自动生成h及cpp文件。该文件即可以把COM组件,像普通的类进行调用。上述1,2两步不分先后,但是在编程之前,得把dll注册到系统中。否则到时候会调用失效。

dumpcpp tlb文件路径

3.h文件和cpp文件处理。

在项目中需要添加COM容器模块QAxContainer。

当把这两个文件加载到C++项目中后,有可能会出现一些错误。这时候就需要做一些简单的修改。

将C#中用的接口注释掉。

  1. 有些命名空间可能跟类名一样,这时候最好手动将命名空间换一个,采用全部替换 -旧的命名空间:: -全部替换-新的命名空间::的方式一次解决,否则在别的类中使用时,采用using namespace 的方式将失效。
  2. 有些在C#中用到了多个构造函数,有些类在QT中没办法识别,可以将不能识别的注释掉。保留一个能够正常使用的。
  3. 有些调用的其他跟自己需要的类不相干的类也可以注释掉,因为可能也有些在qt里面没法识别,都可以注释掉。
  4. 这时候差不多就能用了,如果在自己需要的那个类里面出现了不能注释掉的,比如只有一个构造函数,但是里面又有qt无法识别的类时,这个笔者能力有限,也不知道咋弄。
  5. 目前在遇到的2个项目里面都没有碰到上面的问题,需要的类都可以通过简单的删除或者修改就可以使用了。
  6. 当调用多个COM时,可能这些COM有些相同的定义,这时候最好新建一个h文件,将这些相同的定义放到一个h文件中,这样保证不会多重定义。如下代码,是dumpcpp自动生成的,每个COM组件都有这个时,需要把这些放到一个头文件中,再包含这个头文件即可。
    struct IDispatch;
    
    // Referenced namespace
    namespace System {
        class ISite;
    }
    
    namespace mscorlib {
        class _Type;
        class _EventHandler;
    }
    
    Q_DECLARE_OPAQUE_POINTER(System::ISite*)
    Q_DECLARE_OPAQUE_POINTER(mscorlib::_Type*)
    Q_DECLARE_OPAQUE_POINTER(mscorlib::_EventHandler*)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1518018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【探索Linux】—— 强大的命令行工具 P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)

阅读导航 引言一、UDP协议1. UDP简介2. UDP的特点3. UDP的使用场景4. UDP的局限性 二、TCP协议1. TCP简介2. TCP的特点3. TCP的应用场景 三、UDP 和 TCP 的异同温馨提示 引言 在上一篇文章中,我们深入探讨了Linux网络编程的基石——套接字(Socket&#…

pytorch loss及其梯度

目录 1.loss的种类1.1 MSE1.2 MSE推导1.3 autograd.grad1.4 loss.backward 2. Softmax2.1 softmax推导 1.loss的种类 常见两种一种是均方差,一种是交叉熵 1.1 MSE 1.2 MSE推导 1.3 autograd.grad 1.4 loss.backward 注意:autograd.grad直接返回梯度&a…

守护健康,从营养开始 —— 帕金森患者的饮食秘籍

亲爱的读者朋友们,您是否知道,在对抗帕金森病的道路上,正确的饮食和营养补充可以成为我们的有力盟友?今天,就让我们一起探索那些能够帮助帕金森患者改善症状、提高生活质量的营养素,开启健康生活的新篇章。…

【保姆级】GPT的Oops问题快速解决方案

GPT的"Oops"问题通常指的是GPT在处理请求时突然遇到错误或无法提供预期输出的情况。要快速解决这个问题,可以尝试以下分步策略: 确认问题范围: 首先,确认问题是偶发的还是持续存在的。如果是偶发的,可能是临…

深度学习_GoogLeNet_4

目标 知道GoogLeNet网络结构的特点能够利用GoogLeNet完成图像分类 一、开发背景 GoogLeNet在2014年由Google团队提出, 斩获当年ImageNet(ILSVRC14)竞赛中Classification Task (分类任务) 第一名,VGG获得了第二名,为了向“LeNet”致敬&#x…

不同抓手的码垛机:适配多元应用场景的灵活之选

在现代工业生产中,码垛机作为一种高效、自动化的物料搬运设备,已经广泛应用于各个行业。而抓手作为码垛机的关键部件,其种类的多样性和适用场景的广泛性,使得不同抓手的码垛机能够满足各种复杂、多变的生产需求。 首先&#xff0c…

蓝桥杯单片机快速开发笔记——LED、蜂鸣器和继电器

一、原理分析 二、简单示例 总结:HC138令Y5C等于1后,通过控制P0^4、P0^6置1打开、置0关闭,便可以控制继电器和蜂鸣器,具体看上述的原理分析,LED同理通过给P0置0便可以控制LED点亮,利用本专栏上一节知识即可简单控制 …

vue 引用百度地图

address.vue <template><div><!-- 地图 --><el-drawer:visible.sync"type1"direction"rtl"size"50%"append-to-bodyclass"map-drawer":before-close"beforeClose"><div style"width: 100%…

Linux学习笔记(一)Linux基本指令

文章目录 前言目录常见命令1. pwd 打印当前所在路径2. cd 改变路径、切换路径3. 家目录 回到顶级目录4. 当前路径和上一路径5. 上一次路径6. 绝对路径和相对路径7. ls 列出目录内容8. mkdir 创建目录9. rmdir 删除目录10. touch 创建文件11. mv 修改文件目录、移动路径12. cp 复…

Vue3基础笔记(1)模版语法 属性绑定 渲染

Vue全称Vue.js是一种渐进式的JavaScript框架&#xff0c;采用自底向上增量开发的设计&#xff0c;核心库只关注视图层。性能丰富&#xff0c;完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用&#xff0c;适用于场景丰富的web前端框架。灵活性和可逐步集成…

一周学会Django5 Python Web开发-Jinja3模版引擎-模板语法

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计37条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

Linux系统架构----Tomcat 部署

一.Tomcat概述 Tomcat服务器是一个免费的开放式源代码的web应用服务器&#xff0c;属于轻量级应用级服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP程序的首首选。 一般来说&#xff0c;tomcat虽然和Apache或者Nginx这些…

ThingsBoard 开源物联网平台

文章目录 1.ThingsBoard 介绍2.ThingsBoard 架构2.1.单体架构2.2.微服务架构 3.物联网网关4.边缘计算 ThingsBoard # ThingsBoardhttps://iothub.org.cn/docs/iot/ https://iothub.org.cn/docs/iot/thingsboard-ce/1.ThingsBoard 介绍 ThingsBoard 是一个开源物联网平台&…

MySQL 数据库 下载地址 国内阿里云站点

mysql安装包下载_开源镜像站-阿里云 以 MySQL 5.7 为例 mysql-MySQL-5.7安装包下载_开源镜像站-阿里云

C++ 拷贝构造函数和运算符重载

目录 一. 拷贝构造函数 1. 引入 2. 拷贝构造的概念 3. 浅拷贝 4. 深拷贝 二. C运算符重载 1. 概念 2. 注意事项 3.举例 一. 拷贝构造函数 1. 引入 我们在创建对象时&#xff0c;能不能创建一个与原先对象一模一样的新对象呢&#xff1f;为了解决这个问题&#x…

Qt/QML编程之路:基于QWidget编程及各种2D/3D/PIC绘制的示例(45)

关于使用GWidget,这里有一个示例,看了之后很多图形绘制,控件使用,及最基本的QWidget编程都比较清楚了。ui的绘制: 运行后的界面如 工程中有非常丰富的关于各种图形的绘制,比如上图中circle,还有image。有下面一段readme的说明: # EasyQPainter Various operation pra…

java数据结构与算法刷题-----LeetCode47. 全排列 II

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 暴力回溯2. 分区法回溯 此题为46题的衍生题&#xff0c;在46题…

QT c++ 双精度数拆分和组合 Tool

本文描述QT c的双精度数拆分和合并&#xff0c;即双精度浮点数拆为四个16位无符号整数以及将四个16位无符号整数组合为双精度浮点数。 开发平台&#xff1a;win10QT6.2.4 MSVC2019 64 bit 在本文的最好列出了代码和可执行文件打包下载链接&#xff08;可直接使用&#xff09;…

【数学】【计算几何】1453. 圆形靶内的最大飞镖数量

作者推荐 视频算法专题 本文涉及知识点 数学 计算几何 LeetCoce:1453. 圆形靶内的最大飞镖数量 Alice 向一面非常大的墙上掷出 n 支飞镖。给你一个数组 darts &#xff0c;其中 darts[i] [xi, yi] 表示 Alice 掷出的第 i 支飞镖落在墙上的位置。 Bob 知道墙上所有 n 支飞…

“计算机行业的未来:政策导向、技术创新与发展前景“

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…