前面我们讲到在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库之三相关推荐

  1. 浅谈Linux中ldconfig和ldd的用法

    ldd 查看程序依赖库 ldd 作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题. 示例:查看test程序运行所依赖的库: /opt/app/todeav1/te ...

  2. python文件路径拼接多出斜杠_浅谈python中拼接路径os.path.join斜杠的问题

    浅谈python中拼接路径os.path.join斜杠的问题 调试程序的过程中,发现通过os.path.join拼接的路径出现了反斜杠 directory1='/opt/apps/upgradePac ...

  3. 浅谈Vue中的虚拟DOM

    Virtual DOM 是JavaScript按照DOM的结构来创建的虚拟树型结构对象,是对DOM的抽象,比DOM更加轻量型 为啥要使用Virtual DOM 当然是前端优化方面,避免频繁操作DOM, ...

  4. python去水印如何制作mask_浅谈图像处理中掩膜(mask)的意义

    刚开始涉及到图像处理的时候,在opencv等库中总会看到mask这么一个参数,非常的不理解,在查询一系列资料之后,写下它们,以供翻阅. 什么是掩膜(mask) 数字图像处理中的掩膜的概念是借鉴于PCB ...

  5. linux中whoami命令的作用是,浅谈linux中的whoami与 who指令

    浅谈linux中的whoami与 who指令 whoami 功能说明: 显示用户名称 语法: whoami 补充说明: 显示自身的用户名称,本指令相当于执行  id -un 指令 whoami 与 w ...

  6. 浅谈c++中继承体系中易错点

    浅谈c++中继承体系中易错点 目前,就我工作经验来看,在c++中继承体系中总爱搞错的有两点: 不把基类中需要覆盖的方法为设置为虚方法. 不把基类中的析构函数设置为虚方法. 就第一点而言,如果基类中需要 ...

  7. python如何导入requests模块_浅谈python中requests模块导入的问题

    浅谈python中requests模块导入的问题 今天使用Pycharm来抓取网页图片时候,要导入requests模块,但是在pycharm中import requests 时候报错. 原因: pyt ...

  8. 浅谈Android中的MVP与动态代理的结合

    浅谈Android中的MVP与动态代理的结合 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在Android开发平台上接触MVP足足算起来大概已经有一个年头左右.从最开始到现在经 ...

  9. ldconfig mysql_浅谈Linux中ldconfig和ldd的用法

    ldd 查看程序依赖库 ldd 作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题. 示例:查看test程序运行所依赖的库: /opt/app/todeav1/te ...

最新文章

  1. 如何在yaml中表示一个空字段
  2. encoder decoder模型_如何突破Decoder性能瓶颈?揭秘FasterTransformer的原理与应用
  3. 常用查找算法(顺序、折半、二叉树、哈希、分块)介绍
  4. Unity2D开发小细节
  5. eNSP进行配置网络模拟网络联通
  6. 小技巧:电脑怎么卸载软件?
  7. 华为荣耀6 root
  8. nginx配置多个域名使用同一个端口
  9. OpenCV调用摄像头录像并保存下来
  10. jmeter学习问题记录
  11. 类和函数模板以及特例化
  12. Adobe flash player 因过期而遭到阻止 解决办法
  13. X79主板win10启动卡住问题修复处理
  14. Spring创建对象基本过程
  15. 跟任何人都聊得来—最受世界500强企业欢迎的沟通课(二)
  16. 2020 mse 清华_2020年的北大清华在世界上属于什么水平?
  17. photoshop插件-开发环境搭建
  18. 早期的Twitte蠕虫
  19. 三星手机如何刷原生Android,必赢贵宾会「永久地址0365.tv」三星s8刷原生android三星i8320刷android大法。。。...
  20. NET Framework

热门文章

  1. python中fillna函数_Pandas DataFrame.fillna()例子
  2. [内附完整源码和文档] 基于SSH网上商城的设计与实现
  3. Win10提示0xc004f074
  4. linux lantern 教程,蓝叠安卓模拟器 鬼盗灯传说电脑版下载安装及使用教程
  5. java二维数组输入_java 二维数组的输入输出问题
  6. C语言 逆序输出数组元素
  7. Java蓝屏代码 恶搞小白
  8. 原生js实现移动端touch事件,解决穿透问题
  9. 【windows脚本】以管理员身份运行 windows脚本
  10. 9.个人信息查询接口