利用qtwinmigrate生成Qt带ui界面的DLL详解

可供VC调用的QT编写的界面DLL方法 一般直接编写的QT动态库是无法被Windows下的VC6.0等调用的。 如下步骤   第一步:必须要在QT界面库源码下包含qtwinmigrate的源码包和库,网上可下载到。   第二步:在QT的proc文件中添加以下的一行 include,路径自行修改   第三步:在需要到处的动态库DLL的cpp文件中包含如下有关qtwinmigrate的头文件   第四步:基于前 阅读详情

注意!!如果要被C#调用,则必须选择msvc编译器!!本文用的MinGW-32做演示


      本文中谈的是用QT封装一个包含界面的DLL,然后在其他任何地方使用任何语言来调用这个DLL,不是那种在qt creator里面建一个dll工程,然后再在qt creator里建一个调用该dll的工程的情况(这种示例可参考该链接 http://download.youkuaiyun.com/source/2855817)

        在qt creator中是可以直接建立一个C++ DLL工程的,编译以后也可以生成dll,但是这样生成的dll拿VC去调是不会成功的。后来在优快云上看到有人发的这样一篇帖子(原文链接http://blog.youkuaiyun.com/normallife/article/details/5397980)。里面谈到  “因为 QT 必须有调用 QApplication 的 exec 方法,这样才能产生消息循环, QT 的程序才可以运行。所以说如果我们使用了 QT 编写了 dll 程序,在普通的 windows 程序中是不能调用的。在调用的时候会出现错误。当然 QT 提供了解决方法:那就是 QTWinmigrate”。 

1.下载QTWinmigrate  qtwinmigrate资源包-QT文档类资源-优快云下载

2.找到资源包中的qtwinmigrate文件夹,将这个文件夹单独复制到一个文件夹里

3.进入【qtwinmigrate】-【examples】-【qtdll】,qtdll 整个文件夹是我们直接拿来使用的文件夹,我们只需要将 qtdll.pro 修改成我们需要的样子即可。

4.打开 qtdll.pro ,选择合适的编译器,这里我选择 MinGW 32-bit

 5.在项目中插入一个ui界面。

右键树头文件 qtdll -【Add New...】-【Qt】-【Qt设计师界面类】-【choose】

 6.给界面起个名~

 7.这里的ui界面根据个人需求随便画。我只实现一个小功能,方便在VS中调用的时候做测试。

点击一下【pushbutton】输出一个【“Congraduations!”】

 8.下面修改 main.cpp 文件。

先将 uidll 的头文件包含进去,再将黄色框框里的代码进行替换

 将DLL发布接口函数的部分修改为如下代码:

 其中******是你界面文件的.h文件中定义的界面类名 

   extern "C" __declspec(dllexport) int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    ****** w;                     //*****是界面类的名字,如QWidget。w不需要改变
    w.show(); 
    return a.exec(); 
} 

9.将【Debug】换成【Release】,然后点个锤子构建项目。回到qtdll同级目录,出现下面这个说明构建成功,注意,是MinGW32-Release

 10.进入【build-qtdll-Desktop_Qt_5_12_11_MinGW_32_bit-Release】-【release】

这个文件就是包含我们 ui 界面的 dll 文件了


二.  生成依赖库

1.创建一个新的文件夹,这个文件夹就是整个ui界面所有需要被调用的文件打包,把上面的 dll 文件复制进去,只复制dll文件即可!

我的路径: E:\QtDll

2.打开MinGW-32的终端,依次输入下面的黄字。点击回车后开始在QtDll文件夹内自动添加各种依赖库

 完成后的文件夹如下:

 如果我们需要调用这个ui文件,就把整个文件夹复制到对应的VC项目里就可以了

目前还没有调用成功,先写到这,以后再补充

创建及调用基于QT5 QML的 DLL(举例QML中使用QZXing识别二维码) 1.  概述 Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画、各种绚丽效果的 UI 都不在话下。在许多情况下基于QML开发的漂亮的界面想将他设计成组件提供给其他人使用,又不想让别人看到QML源码,另外如果其他人是基于vc环境又如何使用你的QML界面呢?本文介绍如何将基于QT.6 QML开发的模块编译成可以在VS环境中直接使用的DLL库文件,并举例使用QZXing 阅读详情

相关推荐

Windows下如何使用QT编写dll程序

版权声明请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。 Windows下如何使用QT编写dll程序因为QT必须有调用QApplication的exec方法,这样才能产生消息循环,QT的程序才可以运行。所以说如果我们使用了QT编写了dll程序,在普通的windows程序中是不能调用的。在调用的时

我一路走来--- 1万+

借助qtwinmigrate,实现外部程序调用带QT界面的DLL

首先看GitHub提供的示例: 下载 qtwinmigrate:https://github.com/qtproject/qt-solutions 解压,找到 \qtwinmigrate\examples\qtdll\qtdll.pro,使用QtCreator打开: #include <qmfcapp.h> #include <qwinwidget.h> #include <QMessageBox> #include <windows.h> BOOL WI

HelloKandy's Blog 7494

Qt学习笔记:如何在Windows上使用动态链接库

在Qt Creator中选择“File”->“New File or Project”,然后在左侧面板中选择“Qt Widgets Application”。请选择您喜欢的任何工具包,并单击“Finish”按钮。现在,我们需要将生成的myLib.dll文件复制到我们的Qt应用程序的目录中。将其放入项目目录的“lib”文件夹中,并将其添加到项目文件。最后,在我们的Qt应用程序中,我们可以使用库中定义的函数myFunc()。注意,这将自动在应用程序运行时链接到myLib.dll,并根据需要选择正确的版本。

带你成为别人眼中的大佬! 669

使用qtwinmigrate解决MFC调用QT的dll无法正常退出的问题

之前写了一篇《MFC调用Qt使用MinGW编译的带界面的dll解答》,这一篇本来打算写如何隔离Qt的依赖dll到单独目录,但是有个更重要的问题需要解决,那就是如果使用那篇文章中的方法调用Qt的dll,会发现程序无法正常退出——即关闭了QT界面之后,无法正确FreeLibrary,MFC程序也无法正常退出(除非强行结束进程)。 那么这个问题该如何解决呢,其实已经有很成熟的开源库qtwinmigrate给出了解决方案,目前测试Qt5.0可用,该库的下载地址为:GitHub - qtproject/qt-sol

秋月的私语 2054

qtwinmigrate qt5.7.0+vs2013可用

qtwinmigrate qt5.7.0+vs2013可用,需以源码形式使用,以dll形式编译时会有链接错误

qtwinmigrate在QT下生产DLL的利剑

这个是QT下生产DLL的源码文件,你可以参考里面的例子去生产dll文件。 有需要的朋友可以下载来学习,非常的强大。

windows下如何使用QT编写dll程序 .

Windows 下如何使用 QT 编写 dll 程序 因为 QT 必须有调用 QApplication 的 exec 方法,这样才能产生消息循环, QT 的程序才可以运行。所以说如果我们使用了 QT 编写了 dll 程序,在普通的 windows 程序中是不能调用的。在调用的时候会出现错误。当然 QT 提供了解决方法:那就是 QTWinmigrate 这里是 QT 官方网站对 QTWinmi...

weixin_30307267的博客 340

<工控><PLC>汇川Easy521系列PLC与汇川SV630N伺服进行EtherCat通讯的相关配置及指令编写

本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

用沸腾的热血,支付我们的人生吧! 2万+

qtwinmigrate资源包:Qt带ui界面的DLL生成神器

qtwinmigrate资源包:Qt带ui界面的DLL生成神器 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发领域,跨平台兼容性和模块化设计越来越受到重视。Qtwinmigrate资源包应运而生,它是一款专门为Qt开发者打造的资源包,可以帮助开发者轻松生成带有UI界面的Qt DLL文件。通过这一工具,开发者可以实现更高效的模块化设计,优化软件架构,提升开...

gitblog_06763的博客 733

5V转±12V无变压器双boost电路

最近有个新项目,需要±10V范围的模拟量输出(非隔离),对于5V以下供电的控制板而言单端输出绝对没问题,可现在需要有正负输出,是少不了正负电源的,因此准备设计一个5V转±12V的电源,然后选择一个双向供电的运放,来实现单端模拟量信号向双向模拟量信号转换。 本文就来分享一下5V转±12V电源的设计。对于有类似双向电源需求的场合,大多使用变压器通过增加多个绕组来实现,而对于体积空间有要求的场合来讲,变压器实在是太大了,另外对于一些成熟的项目,变压器如果是已经设计好的,再额外增加绕组需要重新设计,费时费力。于是,

qq_30388337的博客 1万+

单片机原理及应用知识点汇总(一)

在键闭合稳定时,读取键的状态,并且必须判别;、串行通信的优点是只需一对传送线,成本低,适于远距离通信,缺点是传送速度较低。、并行通信的优点是传送速度高,缺点是所需传送线较多,远距离通信不方便。、串行通信中,为使设备同步工作,需要通信双方有两个共同的要求,一是。系列单片机的指令中,既有带借位的减法指令,又有不带借位的减法指令。、简述在使用普通按键的时候,为什么要进行去抖动处理,如何处理。、在异步通信的帧格式中,数据位是低位在前高位在后的排列方式。、异步通信中,波特率是指每秒传送二进制代码的位数,单位是。

T19900的博客 696

使用C++控制台程序或Python调用Dll创建Qt界面(dll中创建QApplication,qtwinmigrate的使用)

目录   理论 构建DLL 使用Python进行调用 使用C++控制台程序进行调用   理论 在Windows下,可能要用MFC或C#或Java,python调用一个插件,这个插件是一个dll,可以弄一个Qt的界面出来,官方已经给出了一个API了,为qtwinmigrate,下面来演示下qtwinmigrate中的一例子,并且修改这个例子达到我们想要的效果。   构建DLL ...

IT1995的博客 9315

Claude Code 100个真实案例 - 用AI设计Arduino PCB电路板(硬件小白也能画板)

本案例展示如何使用 Claude Code 配合 KiCad 的 Python 脚本接口,从零设计一块 Arduino 传感器扩展板 PCB。从原理图符号创建、网表生成到 PCB 布局布线,全程自动化完成,最终输出可直接发给工厂打样的 Gerber 文件。

yueyeguzhuo的专栏 437

QT生成dll供其他程序调用:qtwinmigrate项目深入解析

QT生成dll供其他程序调用:qtwinmigrate项目深入解析 去发现同类优质开源项目:https://gitcode.com/ QT生成dll供其他程序调用是现代软件开发中的一项重要需求。今天,我们将详细解析开源项目qtwinmigrate,带您了解它的核心功能、技术分析、应用场景以及项目特点。 项目介绍 qtwinmigrate是一个专门为QT开发者设计的开源项目,旨在帮助开发者生成可以被...

gitblog_06761的博客 355

国科大学习资料--人工智能原理与算法-第六次作业解析(学长整理)

国科大学习资料–人工智能原理与算法-第六次作业解析(张文生老师主讲)(6.6、6.7、6.11) 6.6 说明如何通过使用辅助变量把诸如A+B=C这样的三元约束转变成三个二元约束。假设值域是有限的。(提示:考虑引进新变量表示变量对的值,引进约束如“X是Y变量对中的第一个元素”。)然后说明如何把多于三个变量的约束类似地转换为二元约束。说明如何通过改变变量的值域来消除一元约束。这就完整演示了任何CSP都可以转变为只含二元约束的CSP。 答:首先,我们引入一个新变量AB,假设A和B的范围均为N,AB的范围为N×N

无名何许人的博客 2869

华为OD机试双机位C卷-几何平均值最大子数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)2026双机位C卷 【几何平均值最大子数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【几何平均值最大子数组】。

qq_45776114的博客 1366

【转】将QT开发的界面程序封装成DLL,在VC中成功调用

最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为优快云给了我很多帮助,将心得写在这里供大家参考。    PS:本文中谈的是用QT封装一个包含界面的DLL,然后在其他任何地方使用任何语言来调用这个DLL,不是那种在qt creator里面建一个dll工程,然

w598903845的专栏 762

电子元件及其规格书的查找与理解

本内容收录:在电子开发或维修过程中,查找电子元件及其规格书心得体会,以及元件规格书的理解,系个人多年实战经验的系统梳理。内容着重介绍贴片元件代码反查型号的实用技巧,并以三款典型疑难元件为例,详述其完整查找过程与最终型号确认。

让你爱上电路设计 3985

qtwinmigrate资源包介绍

qtwinmigrate资源包介绍 去发现同类优质开源项目:https://gitcode.com/ 欢迎使用qtwinmigrate资源包!本资源包旨在帮助您利用qtwinmigrate工具生成Qt带ui界面的DLL。以下是关于该资源包的详细信息: 资源文件描述 本资源包包含qtwinmigrate以及其他相关文件。qtwinmigrate是一款强大的工具,可以帮助您轻松地将Qt界面迁移至DLL...

gitblog_06700的博客 250

【机器视觉】基于深度学习的托盘PCB识别与计数(有无、正反)

工业机器视觉是指在制造业和工业环境中使用计算机视觉技术来执行检测、测量、识别和控制任务。它结合了硬件(如相机、镜头、光源)与软件(图像处理算法)来自动完成传统上需要人工视觉的任务,从而提高生产效率、产品质量以及工作安全性。工业机器视觉系统通常具有高精度、高速度和高可靠性,能够适应恶劣的工作环境。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

使用启动外部进程的方式解决there should be only one application object(使用qtwinmigrate中常出现)

目录   背景 解决问题     背景 有点时候,在Windows操作系统下,在dll中使用qtwinmigrate添加了qt界面,然后在MFC或者C#或者其他语言调用的时候不会出现问题,然而再用QtGUI程序去调用时就会出现如下的问题:   解决问题 dll的源码查阅下面这个链接的博文: 使用C++控制台程序或Python调用Dll创建Qt界面(dll中创建主事件循环,...

IT1995的博客 6294

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

将QT开发的界面程序封装成DLL,在VC中成功调用

转载自:http://blog.youkuaiyun.com/xlzhu87/article/details/39101945     没有亲自测试。 最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为优快云给了我很多帮助,将心得写在这里供大家参考。     

三滴雨的博客 1749

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

qt编译c语言dll,QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了不少人家的SDK,绝大部分用VC编写,并且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0运行库,因此无需兼带其余DLL便可运行。也发现有些用汇编和C封装的,那估计是高手才能编写啊!那怎么办呢?眼看一星期的交货期要到了,因为本人历来没有写过SDK开发包,内心那个着急啊,赶忙想出了三种处理方案。编程方...

weixin_31411313的博客 1387
上一篇: 解决Qt.exe文件打不开的各种报错
下一篇: MySQL学习笔记1——数据库初了解
MuteuooW
博客等级 码龄7年 63粉丝 27原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值