Qt调用Com组件--QT调用COM组件DLL(dumpCPP工具)

近期项目使用COM组件生成的DLL库,我采用QT自带Com组件操作类调用DLL中函数接口;QT自带com组件操作类库,QAxObject或QAxWidget即可操作以COM为组件的DLL库,网上有许多例子采用这两个类操作EXCEL,在此我不做详述,在QT中还可以使用QT类库创建COM组件供Windows中C#调用;在此我想说QT是真强大。

这里附两个例子操作excel:(该两个例子我随手贴的,如有侵权请告知删除)

https://blog.csdn.net/qq319923400/article/details/80149367

https://blog.csdn.net/x85371169/article/details/79268258

使用QT自带dumpcpp工具直接将COM组件DLL库转换成Qt可调用C++类;具体操作如下:

1)找好自己安装QT目录,并确定开发环境,我在windows中使用,采用QT5.9.7版本QT,环境与VS2015共同开发,所以使用msvc2015工具链中工具,工具路径如下:

2)查看使用方法,可直接查看QT帮助文档;

3)找到需要处理的DLL库或需要使用工具的库ID,ID及注册表中的注册ID,如果不知道ID名或ID号可直接在注册表中查找,我的ID如下:

4)使用cmd生成C++类,先切换路径到dumpcpp工具路径下,然后使用dumpcpp ID

执行未报错将会在Qt工具路径下生成C++的类:一个.h一个.cpp

这两个文件以QT类生成,可直接在项目中使用;

5)将生成文件引用本机项目即可使用该组件

注:生成的文件不带信号函数因为它直接跳过所有事件:skipping event interface _IVSPortAxEvents,但不影响操作,在COM组件中的事件函数,其实在该类中可直接使用其事件函数为信号函数,需要注意的只有其事件函数参数值:

在QAxwidget中有一信号函数,该信号函数来自QAxBase

使用该信号函数可查看到组件会响应的所有事件函数及参数类型,该信号可供参考

博客文章迁移至:https://www.10sxj.com/

如有疑问加群:676977101(新群)

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
下面是使用Qt调用HP-Socket实现UDP客户端的步骤: 1. 下载并安装HP-Socket for C++,下载地址为https://github.com/ldcsaa/HP-Socket。 2. 创建一个Qt项目,包含头文件"HPTypeDef.h"、"HPClient.h"、"HPSocket4C-SSL.lib"和"HPSocket4C-SSL.dll"。 3. 在Qt项目中创建一个类,命名为"UdpClient",并继承自"CTcpClientListener"。 4. 在"UdpClient"类中添加以下代码: ```cpp #include "HPTypeDef.h" #include "HPClient.h" class UdpClient : public CTcpClientListener { public: UdpClient(); ~UdpClient(); BOOL Start(LPCTSTR pszAddress, USHORT usPort); private: virtual EnHandleResult OnConnect(ITcpClient* pSender, CONNID dwConnID); virtual EnHandleResult OnReceive(ITcpClient* pSender, CONNID dwConnID, const BYTE* pData, int iLength); virtual EnHandleResult OnClose(ITcpClient* pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode); private: CHPClient m_Client; }; ``` 5. 实现"UdpClient"类的构造函数和析构函数: ```cpp UdpClient::UdpClient() { m_Client.SetListener(this); } UdpClient::~UdpClient() { m_Client.Stop(); } ``` 6. 实现"Start"函数,该函数用于启动UDP客户端: ```cpp BOOL UdpClient::Start(LPCTSTR pszAddress, USHORT usPort) { if(!m_Client.Start(pszAddress, usPort)) return FALSE; return TRUE; } ``` 7. 实现"UdpClient"类的回调函数: ```cpp EnHandleResult UdpClient::OnConnect(ITcpClient* pSender, CONNID dwConnID) { return HR_OK; } EnHandleResult UdpClient::OnReceive(ITcpClient* pSender, CONNID dwConnID, const BYTE* pData, int iLength) { // 处理接收到的数据 return HR_OK; } EnHandleResult UdpClient::OnClose(ITcpClient* pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode) { return HR_OK; } ``` 8. 在Qt项目中实例化"UdpClient"类,并调用"Start"函数启动UDP客户端: ```cpp UdpClient client; if(!client.Start("127.0.0.1", 12345)) { qDebug() << "Start UDP client failed."; return; } ``` 9. 在"UdpClient"类中添加发送数据的函数,如下所示: ```cpp BOOL UdpClient::Send(const BYTE* pData, int iLength) { return m_Client.Send(pData, iLength); } ``` 10. 调用"Send"函数发送数据: ```cpp BYTE* pData = new BYTE[1024]; int iLength = 1024; // 填充pData if(!client.Send(pData, iLength)) { qDebug() << "Send data failed."; return; } delete[] pData; ``` 以上就是使用Qt调用HP-Socket实现UDP客户端的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值