浅谈VC中使用Qt库之三
前面我们讲到在VC中直接使用Qt,这种方法将Qt和VC代码混在一起,感觉不伦不类,更好的方法是将这些界面封装在库中,vc通过加载dll的方式来使用。
1.首先创建一个win32 项目-》选择动态库-》完成
将前面工程的EdbParamaUi.h EdbParamaUi.cpp moc_EdbParamaUi.cpp拷贝到该工程中并加入工程。
2. 编写导出函数
编译运行生成库。
3.测试工程我们使用前面的几节的工程修改代码如下:
oid CMFCApplication4Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//QMessageBox::information(NULL, QStringLiteral("这是Qt消息框"), QStringLiteral("这是Qt消息框"));
//这里测试我给的绝对路径
HMODULE mod = LoadLibrary(_T("E:/work/QuotationExcelUi/Debug/QuotationExcelUi.dll"));
//这个是测试Qt生成的Dll的部分,先动态载入,再使用导出的函数
if (mod)
{
typedef void(*pShowDialog)(HWND parent);
pShowDialog showDialog = (pShowDialog)GetProcAddress(mod, "ShowEdbParamaUi");
if (showDialog)
showDialog(NULL);
FreeLibrary(mod);
}
}
然后将先前添加的Qt代码都注销(因为一个进程只能有一个QApplication对象)
4.运行该工程
出现找不到QtCore.dll文件。
我们将Qt安装目录下bin目录下的所有文件拷贝到这个工程的exe文件的目录。
再次运行 点击按钮
·
成功
但是这里需要将Qt的库拷贝奥目录 要是有多个exe掉用这个dll 每个exe都得带上一份Qt库,这显然不符合正常逻辑, 解决办法将Qt 库目录添加到环境变量中:
重启vs 并删掉 该目录的Qt 库 重新运行发现成功运行了。
自此这2种方法应该可以满足一般的开发需要了,至于要在Qt使用MFC 思路也基本一致,如果你的Qt版本在5.0以下建议使用qtwinmigrate-2.8_1去实现。
浅谈VC中使用Qt库之三相关推荐
- 浅谈Linux中ldconfig和ldd的用法
ldd 查看程序依赖库 ldd 作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题. 示例:查看test程序运行所依赖的库: /opt/app/todeav1/te ...
- python文件路径拼接多出斜杠_浅谈python中拼接路径os.path.join斜杠的问题
浅谈python中拼接路径os.path.join斜杠的问题 调试程序的过程中,发现通过os.path.join拼接的路径出现了反斜杠 directory1='/opt/apps/upgradePac ...
- 浅谈Vue中的虚拟DOM
Virtual DOM 是JavaScript按照DOM的结构来创建的虚拟树型结构对象,是对DOM的抽象,比DOM更加轻量型 为啥要使用Virtual DOM 当然是前端优化方面,避免频繁操作DOM, ...
- python去水印如何制作mask_浅谈图像处理中掩膜(mask)的意义
刚开始涉及到图像处理的时候,在opencv等库中总会看到mask这么一个参数,非常的不理解,在查询一系列资料之后,写下它们,以供翻阅. 什么是掩膜(mask) 数字图像处理中的掩膜的概念是借鉴于PCB ...
- linux中whoami命令的作用是,浅谈linux中的whoami与 who指令
浅谈linux中的whoami与 who指令 whoami 功能说明: 显示用户名称 语法: whoami 补充说明: 显示自身的用户名称,本指令相当于执行 id -un 指令 whoami 与 w ...
- 浅谈c++中继承体系中易错点
浅谈c++中继承体系中易错点 目前,就我工作经验来看,在c++中继承体系中总爱搞错的有两点: 不把基类中需要覆盖的方法为设置为虚方法. 不把基类中的析构函数设置为虚方法. 就第一点而言,如果基类中需要 ...
- python如何导入requests模块_浅谈python中requests模块导入的问题
浅谈python中requests模块导入的问题 今天使用Pycharm来抓取网页图片时候,要导入requests模块,但是在pycharm中import requests 时候报错. 原因: pyt ...
- 浅谈Android中的MVP与动态代理的结合
浅谈Android中的MVP与动态代理的结合 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在Android开发平台上接触MVP足足算起来大概已经有一个年头左右.从最开始到现在经 ...
- ldconfig mysql_浅谈Linux中ldconfig和ldd的用法
ldd 查看程序依赖库 ldd 作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题. 示例:查看test程序运行所依赖的库: /opt/app/todeav1/te ...
最新文章
- 如何在yaml中表示一个空字段
- encoder decoder模型_如何突破Decoder性能瓶颈?揭秘FasterTransformer的原理与应用
- 常用查找算法(顺序、折半、二叉树、哈希、分块)介绍
- Unity2D开发小细节
- eNSP进行配置网络模拟网络联通
- 小技巧:电脑怎么卸载软件?
- 华为荣耀6 root
- nginx配置多个域名使用同一个端口
- OpenCV调用摄像头录像并保存下来
- jmeter学习问题记录
- 类和函数模板以及特例化
- Adobe flash player 因过期而遭到阻止 解决办法
- X79主板win10启动卡住问题修复处理
- Spring创建对象基本过程
- 跟任何人都聊得来—最受世界500强企业欢迎的沟通课(二)
- 2020 mse 清华_2020年的北大清华在世界上属于什么水平?
- photoshop插件-开发环境搭建
- 早期的Twitte蠕虫
- 三星手机如何刷原生Android,必赢贵宾会「永久地址0365.tv」三星s8刷原生android三星i8320刷android大法。。。...
- NET Framework
热门文章
- python中fillna函数_Pandas DataFrame.fillna()例子
- [内附完整源码和文档] 基于SSH网上商城的设计与实现
- Win10提示0xc004f074
- linux lantern 教程,蓝叠安卓模拟器 鬼盗灯传说电脑版下载安装及使用教程
- java二维数组输入_java 二维数组的输入输出问题
- C语言 逆序输出数组元素
- Java蓝屏代码 恶搞小白
- 原生js实现移动端touch事件,解决穿透问题
- 【windows脚本】以管理员身份运行 windows脚本
- 9.个人信息查询接口