文章目录

  • dynamicall 调用方法
  • dumpcpp反向编译方法
    • dumpcpp
    • 生成.h .cpp
    • 使用
  • 对dll文件生成API文档
    • generateDocumentation()函数 乱码解决

dynamicall 调用方法

这个方法教程很多,这里不多说,使用dynamicCall调用共享库,原理就是用函数名称字符串符号去对应的共享库符号表找相对应的函数,然后确定相关函数的地址,并且执行。
但是这种调用方法写起来很不方便,而且不能用IDE环境的代码补全以及提示等功能。

dumpcpp反向编译方法

dumpcpp

在Qt的安装目录文件夹的编译器文件夹的bin目录里有dumpcpp.exe反汇编程序。

对于注册了的dll文件,在注册表里有一个CLISD编码:

生成.h .cpp

cmd 进入dumpcpp所在的文件夹。不能用powerShell,否在报错
输入dumpcpp.exe 加上 CLISD的那一串编码,就可以得到对应的dll库的.h和cpp文件,cpp文件有很多汇编或者01编码,看不懂,但是不影响使用。

使用

将生成的.h和.cpp文件拷贝到需要用的工程中正常使用
使用的时候还是要使用qAXObject控件

     //com控件初始化的一些工作qax = new QAxObject(this);//要在pro文件添加qaxObjecthardWare = new DHHardWareLib::IDHTestHardWare(nullptr,qax);//dumpcpp汇编出来的类hardWare->setControl(QString::fromUtf8("{BE2DDC3D-230E-4A6A-9502-30D3AF268705}"));

汇编出来的类的样子:

对dll文件生成API文档

generateDocumentation()函数 乱码解决

使用dll还想要一下API文档,Qt提供了generateDocumentation()函数
可以将generateDocumentation()函数返回的字符串保存到一个富文本框中,这样不会乱码,如果保存为html注释文件会乱码

      //com控件初始化的一些工作qax = new QAxObject(this);hardWare = new DHHardWareLib::IDHTestHardWare(nullptr,qax);hardWare->setControl(QString::fromUtf8("{BE2DDC3D-230E-4A6A-9502-30D3AF265}"));//生成接口文档QByteArray string = hardWare->generateDocumentation().toUtf8().data();//将接口文档在QTextBrowser中显示this->ui->textBrowser = new  QTextBrowser(this);this->ui->textBrowser->resize(this->size());this->ui->textBrowser->append(string.data());

成功运行结果如下

The COM object is a DHHardWareLib::IDHTestHardWare with the CLSID {BE2DDC3D-230E-4A6A-9502-30D3A}.
Interfaces
Event Interfaces
Public Slots:
void AllChannelBalance(int& ReturnValue);
void AllChannelClearZero(int& ReturnValue);

Qt 中使用dll文件的舒服用法 generateDocumentation()函数 乱码解决相关推荐

  1. 多种方法解决计算机程序中出现.DLL文件丢失的问题

    title: DLL-lose date: 2019-11-21 15:55:47 description: 解决计算机程序中出现.DLL文件丢失的问题   在安装某些软件,我们正准备开开心心地打开, ...

  2. 如何在全局程序集缓存 (GAC) 中安装 DLL 文件

    要使用 Visual Studio .NET 创建小型类库项目.生成强名称,以及在 GAC 中安装项目的 .dll 文件,请执行下列步骤: 在 Visual Studio .NET 中,创建一个新 V ...

  3. Qt中打开excel文件

    qt中打开excel文件有两种方法 第一种,用QAxObject,在使用QAxObject,要在.pro文件中添加QT += axcontainer,同时在调用文件中添加#include <QA ...

  4. dll放在unity哪个文件夹下_unity中调用dll文件总结

    unity中调用dll文件总结 根据收集的资料,对unity中调用dll文件进行总结,目前常用的两种,在给出vs中封装dll文件的步骤. 一.调用c#中的dll文件 1.1封装dll文件 首先新建一个 ...

  5. 没有MsVCp140如何安装MysQl,win10中msvcp140.dll文件如何安装_win10电脑缺少msvcp140.dll文件的安装教程...

    有不少win10系统用户在电脑中运行软件或者程序的时候,反映说会遇到msvcp140.dll文件缺少或丢失的情况,解决方法很简单,只需要安装msvcp140.dll文件即可,那么win10中msvcp ...

  6. C#中使用DLL文件

    首先,我们需要在C++程序中导出DLL文件.我使用的是Visual Studio开发,把项目"属性"中的"配置类型"改为"动态库dll",然 ...

  7. 计算机中丢失cg,【计算机中丢失dll文件】计算机丢失dll文件_计算机中丢失cg dll-win7之家...

    2017-05-16 00:00:00 浏览量:489 wpcap.dll是一个高层的强大捕获程序库,与Unix下的libpcap兼容.它独立于下层的网络硬件和操作系统文件下载,解决找不到wpcap. ...

  8. 电脑程序在计算机丢失怎么办,电脑中dll文件丢失怎么恢复?计算机中丢失dll文件修复方法...

    DLL文件是Windows系统中的动态链接文件,我们在运行程序时都必须链接到dll文件,如果缺少了则无法正常运行,相信大家都会遇到dll文件缺失的情况,那么电脑中dll文件丢失怎么恢复?下面电脑知识大 ...

  9. 在Qt中查看.raw文件

    在Qt中查看.raw文件 Qt中图像类为QImage,而OpenCV对图像操作使用Mat/IplImage,因此,想要在Qt的控件上查看.raw文件需要先将IplImage/Mat转换为QImage ...

最新文章

  1. python的assert(断言)异常步骤机制
  2. 中国-中东欧国家特色农产品 云上国际农民丰收节贸易会
  3. Python:自动化上传OSS
  4. 机器学习算法 拟合曲线_制定学习曲线以检测机器学习算法中的错误
  5. 把王小波作为离我们最近的一个大师
  6. 模版方法模式在Spring框架中的应用
  7. IO流练习题 实现图片的加密解密操作
  8. UE4 身体部件换装实现
  9. windows程序窗体创建流程模型A--发送自定义消息逻辑上出现Bug
  10. Visual Studio.NET 2008开发一册通--LINQ从基础到项目实战这本书怎么样
  11. sublime text3 快速生成方法注释
  12. python整个小服务器
  13. 深入浅出 eBPF|你要了解的 7 个核心问题
  14. safari连接4g网显示未连接服务器,Safari无法打开网页iPhone尚未接入互联网
  15. jquery实现多选框
  16. 2节串联锂电池充电管理IC芯片,5V,12V升降压解决方案
  17. dota2国服服务器位置,Dota2国服完整安装教程
  18. 用Python做一款简单的打字速度测试
  19. 流年似水 启航2019
  20. 用html做自我介绍

热门文章

  1. window点location(仅介绍window点location对象,不介绍属性,因标题不能含有非法字符,.用点来代替)
  2. NLP-Beginner:自然语言处理入门练习-任务一
  3. es6变量赋值重命名
  4. this.$nextTick()的使用场景
  5. vue中style的scoped属性的设计方式
  6. vmware配置centos7网络
  7. ES6公用跑马灯抽奖组件的封装及使用
  8. 为什么网页背景图片都切开
  9. Docker的特性解析
  10. 在ump系统的那半个多月-jqGrid