`
qimo601
  • 浏览: 3416045 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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

    博客分类:
  • Qt
阅读更多

最近手头的一个项目需要做一个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

分享到:
评论
1 楼 chy555chy 2016-03-16  
现在用VC写主要是为了兼容XP,想问一下如果你用QT实现的话,不是就需要带很多动态库才能运行?还是说也可以编译成和MFC一样的不用带那么多动态库的程序?

相关推荐

    将QT界面做成dll在qt其他程序中调用

    将QT界面做成dll在qt其他程序中调用,

    利用Qt Creator将Qt的ui界面程序封装成dll库的代码示例.rar

    利用Qt Creator将Qt的ui界面程序封装成dll库的代码示例,内部均为相对路径,可利用Qt Creator直接独立运行Test.pro,注意要将Test目录下的dll库放在exe的同级目录下,详细内容可参考文章:

    利用Visual Studio将Qt的ui界面程序封装成dll库的代码示例.rar

    利用Visual Studio将Qt的ui界面程序封装成dll库的代码示例,内部均为相对路径,可直接独立运行Test.sln,详细内容可参考文章:

    Qt创建带界面的DLL给C#调用案例-20221226.zip

    C# 与 Qt 混合编程,开发软件。 Qt编写功能模块给C#调用。...这个例子是一个完整的播放器例子,也就是Qt+mpv开发视频播放器给C#调用,主要是介绍Qt编译成DLL,导出接口给C#调用整体流流程,以及接口使用。

    DLL中封装Qt窗口和控件,并使用MFC和Qt调用的示例。

    将Qt控件和窗口封装进dll中,并使用MFC和Qt应用程序写出demo来调用该dll。将dll中封装的Qt窗口嵌入到主程序中,实现窗口渲染和消息传递。

    QT调用dll和MFC调用QT的dll

    编写QT的dll,QT调用QT的dll,QT调用外部的dll,MFC程序调用QT的dll,

    MFC程序调用Qt(DLL)界面显示

    通过使用Qt开发框架,生成dLL动态库,供MFC执行程序调用。实现MFC调用Qt界面显示。

    C#程序调用外部的 C++的QT程序编译的界面UI的DLL

    C#程序调用外部的DLL, DLL是 C++的 QT程序编译的界面UI生成的DLL组件,C#采用的是控制台程序,QT是C++的 开发平台,生成的dll需要放到项目的指定位置,根据代码写的路径去放,或者代码根据放的位置去写路径

    QT封装成dll,C#调用测试例子

    QT封装成dll,供C#调用,源码,仅供参考。

    QT生成带界面的dll给c#调用

    build-qtdll-Desktop_Qt_5_12_2_MSVC2015_64bit-Release文件夹是qt编译生成的文件夹;QtReleaseDll文件夹里面是最重要的qtdialog.dll以及他所依赖的所有的库;CsharpUseQtDll文件夹里面是c#工程。 具体使用细节参见...

    Qt 编程 DLL和DLL的3中常见调用方法

    调用dll里的全局函数,使用QLibrary,它封装了loadlibrary和getprocaddress,等 freelibrary 要求: 需要知道dll里函数的原型,来写函数指针。 dll放到一个指定的目录下不一定非exe旁边。 DLL_CALL2: 调用dll里...

    c#调用QTdll的框架(包含案例)

    c#调用QTdll的框架(包含案例),可以成功运行,自己创建一个C#窗口程序就可以调用, 调用的时候别忘了将dll所依赖的dll放在同一目录下,否则会报试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)。

    Qt中调用MFC对话框

    QT是一个跨平台应用程序和UI开发框架。windows开Qt开发方法:一、Qt Creator+MinGW 或者 Qt Creator+VC++ Compiler二、QT4.8.5 for Windows(VS2015+VS...本实例为VS2015+Qt+Qt插件中开发Qt应用程序同时调用MFC对话框。

    使用Qt开发界面程序控制GPIO

    前言Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象...

    win32 调用 含qt界面的DLL.win32程序

    win32 调用 含qt界面的DLL.win32程序,https://blog.csdn.net/libin88211/article/details/38183791

    Qt.VC调用delphi编写的dll lib,详细方法

    delphi可以很方便的封装第三方库,导出dll,此方法可以很方便的生成供Qt或VC调用的Lib文件,免去动态加载的麻烦,喜欢的朋友可以试下。我就是这么用的。

    QT编写DLL调用示例 方法 参数 返回值 事件回调

    QT编写DLL给外部程序调用示例 方法 参数 返回值 事件回调 : 1:C#或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明函数 必须与实际DLL中函数名及参数一致; [DllImport "qt...

    生成Qt界面动态库,用VC对话框调用显示

    1,exe_dlg_call_qtdll.rar 没有源代码的产品包,里面只有exe和dll文件。 2,VC_CallQtdll.rar VC平台的MFC对话框调用Qt界面动态库源代码包。 3,Qt_qtdialog_360.rar Qt平台的仿360界面源代码包。 4,Qt_DLL.rar Qt...

    Qt调用dll中的功能函数

    篇内容分两部分:第一部分是 QT在 windows 上 DLL的导出和调用; 第二部分是 QT在 linux 上 DLL(os)的导出和调用; /////////////////////////////////////////////////////////////////////////////////////...

    QT生成DLL库文件的方法和使用方法详解和实例源代码

    概括来说, 要把Qt程序做成dll,刚开始可以像做一般应用程序一样实现你程序的所有功能,然后再做一个接口就OK了。 这里说的是(我这儿用的是Qt4.7.0):一个实现加法功能函数封装在Dll文件中 1.用Qt 生成一个项目...

Global site tag (gtag.js) - Google Analytics