qt在动态库里面加载widget的例子
testDll和testExe项目
备注:windows下dll内不需要new QApplication, linux和mac下面需要在动态库里面new QApplication
testdll.h
#ifndef TESTDLL_H
#define TESTDLL_H #include"testDll_global.h" extern "C" TESTDLLSHARED_EXPORT void initApp(void);
extern "C" TESTDLLSHARED_EXPORT void showDlg(void); extern "C" void cleanApp(void); class QApplication;
static QApplication* shareApplication; #endif//TESTDLL_H
testDll_global.h
#ifndef TESTDLL_GLOBAL_H
#define TESTDLL_GLOBAL_H #include <QtCore/qglobal.h> #if defined(TESTDLL_LIBRARY)
# define TESTDLLSHARED_EXPORT Q_DECL_EXPORT
#else
# define TESTDLLSHARED_EXPORT Q_DECL_IMPORT
#endif #endif // TESTDLL_GLOBAL_H
testdll.cpp
#include<QApplication>
#include<QMessageBox>
#include"TestDll.h"
#include"Form.h" extern "C" TESTDLLSHARED_EXPORT void initApp(void)
{
shareApplication=NULL;
} extern "C" TESTDLLSHARED_EXPORT void showDlg(void)
{
if( NULL == shareApplication )
{
int argc=; //windows下注释掉
// shareApplication = new QApplication(argc,NULL); Form* pForm=new Form;
pForm->show(); // shareApplication->exec();
}
} extern "C" void cleanApp(void)
{
if( NULL != shareApplication )
{
QMessageBox::information(NULL,"","appdestroyed",); // shareApplication->quit();
// shareApplication=NULL;
}
}
testExe的测试cpp里面
void MainWindow::on_pushButton_clicked()
{
QLibrary dll("testDll"); if( !dll.load() ) return; typedef void(*DLL_INIT_APP)();
typedef void(*DLL_SHOW_DLG)(); DLL_INIT_APP dll_initApp = (DLL_INIT_APP)dll.resolve("initApp"); DLL_SHOW_DLG dll_showDlg= (DLL_SHOW_DLG)dll.resolve("showDlg"); dll_initApp();
dll_showDlg();
}
qt在动态库里面加载widget的例子的更多相关文章
- c++ 动态库的加载
转载:https://blog.csdn.net/ztq_12345/article/details/99677769 使用ide是vs, 使用Windows.h下的3个函数对动态库进行加载第一个:H ...
- 动态库DLL加载方式-静态加载和动态加载
静态加载: 如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib ...
- 关于Linux动态库的加载路径
问题 按如下步骤在Ubuntu上编译安装Google Protocol Buffers $ ./configure $ make $ make check $ sudo make install 运行 ...
- c#生成动态库并加载
下面这段代码生成dll文件,不能编译运行.点击项目右键,点击生成,这时会在debuge文件中生成相应的配置文件. using System; using System.Collections.Gene ...
- solr6.3.0升级与IK动态词库自动加载
摘要:对于中文的搜索来说,词库系统是一个很比较重要的模块,本篇以IK分词器为例子,介绍如何让分词器从缓存或文件系统中自动按照一定频次进行加载扩展词库 Lucene.Solr或ElasticStack如 ...
- Qt中如何 编写插件 加载插件 卸载插件
Qt中如何 编写插件 加载插件 卸载插件是本文要介绍的内容.Qt提供了一个类QPluginLoader来加载静态库和动态库,在Qt中,Qt把动态库和静态库都看成是一个插件,使用QPluginLoade ...
- qt使用动态库(DLL)
本文主要讲解在QT开发环境中如何使用VC生成的DLL及QT自身生成的DLL.至于其它情况本文不作讨论. 连接库分为2种 (1)动态连接库,通常有.h .lib .dll三个文件,功能实现在dll中 ( ...
- Delphi7 第三方控件1stClass4000的TfcImageBtn按钮控件动态加载jpg图片例子
Delphi7 第三方控件1stClass4000的TfcImageBtn按钮控件动态加载jpg图片例子 procedure TForm1.Button1Click(Sender: TObject); ...
- 第一百四十一节,JavaScript,封装库--DOM加载
JavaScript,封装库--DOM加载 DOM加载,跨浏览器封装DOM加载,当网页文档结构加载完毕后执行函数,不等待图片音频视频等文件加载完毕 /** dom_jia_zai()函数,DOM页面加 ...
随机推荐
- 使用XMLHttpRequest对象完成原生的AJAX请求
1.大家眼中的Ajax 说到Ajax,只要有过前端开发经验的童鞋一定都不陌生,大都知道它就是一种与后端之间的通信技术,通过这个神奇的家伙,我们不用像传统表单那样填完信息一点提交就呼啦呼啦跳转了.Aja ...
- Maven 环境搭建及相应的配置
在一般的Java Web项目开发中,特别是基于Struts + hibernate + spring的框架的时候,会有很多的jar包,一般都会在项目文件中有一个lib文件夹,下面放所有相关的jar包. ...
- 【zznu-2173】
题目链接 题目描述 春天自幼学习人间大道,斩断情缘,现已修成正果,势必要斩尽巨魔.某朝末年,战乱四起,民不聊生,魔界与人间界的封印减弱,n只巨魔趁机降临人间,祸乱百姓.n只巨魔只知扰乱人间,会有天谴降 ...
- 普通用户开通sudo权限:xxx is not in the sudoers file.This incident will be reported.的解决方法
1.切换到root用户下,怎么切换就不用说了吧,不会的自己百度去. 2.添加sudo文件的写权限,命令是: chmod u+w /etc/sudoers 3.编辑sudoers文件 vi /etc/s ...
- poj3068
题解: 最小费用最大流 每一次找最短的 代码: #include<cstdio> #include<cmath> #include<cstring> #includ ...
- 学习写domready
原视频参考http://www.imooc.com/learn/488 --博主个人尝试学习写的-- /** * Created by ty on 2016/1/3. */ //尝试自己写domrea ...
- Silverlight5_Tools安装报错解决方案
将Silverlight5_Tools.exe解压,依次安装 VS10SP1-KB2615527.exe silverlight_sdk.msi RiaServices.msi
- Linux:LAMP搭建DISCU!论坛
LAMP搭建DISCU!论坛 试验机为centos6.8 i686 应用的包 mysql-5.1.73-linux-i686-glibc23.tar.gz httpd-2.2.24.tar.bz2 p ...
- SQL Server里查询表结构命令
现提供两条命令查询表结构: 1.sp_help table_name; 如: [sql] sp_help Student; 2.sp_columns table_name; ...
- Python自定义大小截屏
蝈蝈这两天正忙着收拾家当去公司报道,结果做PHP的发小蛐蛐找到了他,说是想要一个可以截图工具. 大致需要做出这样的效果. 虽然已经很久不写Python代码了,但是没办法,盛情难却啊,只好硬着头皮上了. ...