欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2023/12/20 编程问答 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Qt 中使用dll文件的舒服用法 generateDocumentation()函数 乱码解决 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

      • 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()函数 乱码解决的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。