最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多帮助,将心得写在这里供大家参考。

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

本文所讲的例子在qt 4.7.3 opensource 以及VC6.0/VS2005成功运行

首先,在qt creator中是可以直接建立一个C++ DLL工程的,编译以后也可以生成dll,但是这样生成的dll拿VC去调是不会成功的。后来在CSDN上看到有人发的这样一篇帖子(原文链接http://blog.csdn.net/normallife/article/details/5397980)。里面谈到 “因为 QT 必须有调用 QApplication 的 exec 方法,这样才能产生消息循环, QT 的程序才可以运行。所以说如果我们使用了 QT 编写了 dll 程序,在普通的 windows 程序中是不能调用的。在调用的时候会出现错误。当然 QT 提供了解决方法:那就是 QTWinmigrate”。喜出望外啊,赶紧的把QTWinmigrate下下来。
  打开QTWinmigrate文件夹,里面有几个目录,buildlib,doc,examples,lib,src。
  在examples目录下给出几个应用QTWinmigrate的例子,其中有一个就是qtdll,嘿嘿,用qt creator打开其中的qtdll.pro工程文件。因为这个是已经做好的程序,所以可以直接在此基础上修改。右键单击目录树最上层的工程名qtdll,选择“添加新有文件”,然后新建一个“QT设计师界面类”,类名什么的自己填上,点确定返回,可以看到后缀为.ui的界面文件及界面文件的.h文件和.cpp文件已经加入到qtdll工程里面了,界面你怎么画都行,剩下的步骤就是修改工程中的main.cpp文件
首先在main.cpp文件里面把界面文件的头文件include进来,然后将DLL发布接口函数的部分修改为如下所示:

  extern "C" __declspec(dllexport) int main(int argc, char *argv[])
{QApplication a(argc, argv);****** w;w.show();return a.exec();
}

其中******是你界面文件的.h文件中定义的界面类名
  这样我们得DLL就做好了,然后点构建,就可以生成封装了QT界面并且可以用VC调用的DLL了

在CSDN的第一篇技术贴,说的不详细的大家有什么不懂的可以问我,文章中有什么不对的欢迎大牛指教

转载:http://topic.csdn.net/u/20110706/20/200af06e-5010-4667-8f83-3c3cfb46cacd.html

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

  1. C++代码封装成dll供C#中调用、调用dll无可用源

    C#工程不可以直接调用C++的头文件和Lib库等 所以在程序中C#需要调用的现象,先将C++的东西封装成动态链接库,再调用 若调用dll时显示:无可用源调用,说明导入的DLL路径不对. 静态库和动态库 ...

  2. 在桌面Linux环境下开发图形界面程序的方案对比

    在Linux下开发GUI程序的方法有很多,比如Gnome桌面使用GTK+作为默认的图形界面库,KDE桌面使用Qt作为默认的图形界面库,wxWidgets则是另一个使用广泛的图形库,此外使用Java中的 ...

  3. Matlab GUI学习02:使用GUIDE开发图形界面程序

    pdf版本笔记的下载地址: Matlab GUI学习02_使用GUIDE开发图形界面程序(访问密码:3834) Matlab GUI学习02:使用GUIDE开发图形界面程序 GUIDE GUIDE简介 ...

  4. cordova 一个将web应用程序封装成app的框架

    cordova 一个将web应用程序封装成app的框架 cordova的详细介绍请参考这个链接:http://www.zhoujingen.cn/blog/7034.html 我接下来主要将如何搭建. ...

  5. 怎么把java源代码封装,如何把JAVA程序封装成EXE文件

    如何把JAVA程序封装成EXE文件 可以把普通的Java程序做成真正的exe,也就是单一个exe就可以在没有安装JVM的机器上运行.这样的工具常见的有JET和gcj.前者是收费的,而且做出来的exe还 ...

  6. 服务助手NSSM——将Windows程序封装成服务

    文章目录 简介 安装 初试 删除服务 详细用法 服务依赖 进程优先级 关闭服务 退出和重启 I/O 文件轮换 环境变量 事件钩子 参考文献 简介 NSSM 可以将 Windows 程序封装成服务,当服 ...

  7. 将py程序封装成exe应用程序

    想把自己写的 python 程序发给别人看,难道要把代码发给别人?但是别人却没有 python 的编译器,那该怎么办呢?那就要将自己写的程序封装成 exe 应用程序,使得在任何电脑上都能运行. 1.首 ...

  8. matlab 打包封装,MATLAB程序封装成EXE文件

    MATLAB程序封装成EXE文件 1.设置编译器: 首先需要配置自己的Matlab Compiler,Matlab Compiler的作用是将程序编译成为机器可以直接执行的程序.配置Compiler ...

  9. 把你的unity 工程中的cs文件封装成 dll

    文章目录 1.打开Visual Studio 新建一个类库(.NET Framework) 项目 2.unity的dll引用:UnityEngine.dll 和 UnityEditor.dll 3.. ...

最新文章

  1. 我的第一个VUE示例
  2. 3D打印产业化机遇与挑战
  3. python手机版怎么运行项目或脚本-python可以在手机上运行吗
  4. 【HDOJ图论题集】【转】
  5. html select显示树形菜单_HTML标签总结
  6. python与或非位运算_python位运算
  7. (3)FPGA开发语言介绍(第1天)
  8. Flex与.NET互操作(十六):FluorineFx + Flex视频聊天室案例开发
  9. 70. 爬楼梯(JavaScript 完全背包)
  10. 结对编程——paperOne基于java的四则运算 功能改进
  11. 【BZOJ 3669】 [Noi2014]魔法森林 LCT维护动态最小生成树
  12. FileZillaServer创建FTP服务器
  13. 11210怎么等于24_小学生24点题目大全附答案
  14. AndroidStudio中的NDK开发初探
  15. 《晚明》小说各战役配图
  16. Text to Image 文本生成图像定量评价指标分析笔记 Metric Value总结 IS、FID、R-prec等
  17. 网易邮箱好用还是TOM邮箱好用?企业邮箱可绑定微信吗?
  18. 【职场新贵】告诉你如何在压力下高效工作
  19. 文物摄影中白平衡的正确设置(图)
  20. SQL-包含中文字、英文、数字字符

热门文章

  1. ubuntu18安装微信
  2. ThinkPHP连接sqlserver,错误11001
  3. ArcGIS AddIN异常:无法注册程序集 未能加载文件或程序集ESRI.ArcGIS.Desktop.Addins
  4. gitlab简单使用教程【转】
  5. 方格取数 (Standard IO)
  6. paip.性能跟踪profile原理与架构与本质-- python扫带java php
  7. 【原】人生的程序公式
  8. Java如何简单实现一个定时器
  9. sp | sp格式的空间矢量对象及其函数方法简介
  10. mysql 如何选择2行_MYSQL – 从大表中的第二行中选择数据