QT5 动态链接库的创建和使用(QT自己做动态库给自己使用)
记录一下QT5 动态链接库的创建和使用
在文章的最后有完成的代码供下载
1.创建动态链接库
先新建一个库项目

选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld

再点击下一步到

如果这里我们需要QtGui所以也勾选上了
再点击下一步直到完成
我们在.pro文件里加上
DESTDIR =..\MyDebug
它的意思是我们把生成的内容放到这个文件夹里,如果没有它会自动生成
点击项目把Shadow build 去掉勾选

设置完成后我们来实现方法测试
把sld.h修改成这样

#ifndef SLD_H
#define SLD_H #include "sld_global.h"
#include <QString> class SLDSHARED_EXPORT Sld
{
public :
Sld();
QString GetStr();
}; #endif

它的.cpp

#include "sld.h"
#include <QDebug> Sld::Sld()
{
qDebug()<<"";
} QString Sld::GetStr()
{
return "aa";
}

我们那了一个测试方法返回aa
我们再新添加一个窗体供测试用

我给命名为MyDialog
把.h文件修改成

#ifndef MYDIALOG_H
#define MYDIALOG_H #include <QDialog>
#include "sld_global.h"
namespace Ui {
class MyDialog;
} class SLDSHARED_EXPORT MyDialog : public QDialog
{
Q_OBJECT public:
explicit MyDialog(QWidget *parent = 0);
~MyDialog(); private:
Ui::MyDialog *ui;
}; #endif // MYDIALOG_H

,cpp

#include "mydialog.h"
#include "ui_mydialog.h" MyDialog::MyDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::MyDialog)
{
ui->setupUi(this);
} MyDialog::~MyDialog()
{
delete ui;
}

这里什么也没做只是把SLDSHARED_EXPORT加上了
好了就这样,我们构建一下就会在MyDebug文件夹里生成我们的dll
2.怎么使用动态链接库
新建一个Qt WidgetsApplication项目

在.pro文件里修改和上边一样加上
DESTDIR =..\MyDebug 再点击项目把shadow build 去掉
再加上
INCLUDEPATH +=../sld
LIBS += -L$$DESTDIR -lsld
第一句是把sld项目的文件夹包含到这个项目里来,这样我们就能直接用它里面的头文件了
第二句是告诉编译器lib在哪(我用的是vs的编译器如果 用mingw可以直接添加sld.dll)
我样在窗体上加一个按钮,并添加槽
.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow(); private slots:
void on_pushButton_clicked(); private:
Ui::MainWindow *ui;
}; #endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "sld.h"
#include <QMessageBox>
#include "mydialog.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::on_pushButton_clicked()
{
MyDialog * my =new MyDialog(this);
my->show();
QMessageBox * msg=new QMessageBox(this);
Sld s; msg->setText(s.GetStr());
msg->show();
}

好了,构建,运行看效果吧

源代码:sharelibDemo.7z
http://www.cnblogs.com/li-peng/p/3844614.htmlbv
QT5 动态链接库的创建和使用(QT自己做动态库给自己使用)的更多相关文章
- QT5 动态链接库的创建和使用
记录一下QT5 动态链接库的创建和使用 在文章的最后有完成的代码供下载 1.创建动态链接库 先新建一个库项目 选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld 再点击下一步 ...
- QT中添加 动态库(.so) 和 静态库 (.a) 的方法
在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 ...
- Qt——动态库的创建和使用
一.动态库是什么 很多人写程序的人都见过.lib和.dll文件,对动态库也略有耳闻. 生成动态库后可以得到两个文件,后缀名分别是.lib以及.dll. 简而言之,.lib称为导入库,相当于头文件:.d ...
- 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作
一 QT的内存管理 1 QT中的内存管理是QObject来管理的 2 QT中的内存管理没有cocos2dx中的引用计数 3 组件能够指定父对象 QTimer *timer = QTime ...
- Qt编写自定义控件插件开放动态库dll使用(永久免费)
这套控件陆陆续续完善了四年多,目前共133个控件,除了十几个控件参考网友开源的代码写的,其余全部原创,在发布之初就有打算将动态库开放出来永久免费使用,在控件比较完善的今天抽了半天时间编译了多个qt版本 ...
- windows库的创建和使用:静态库+动态库
windows库的创建和使用:静态库+动态库 一.静态库的创建和使用 1. 静态库创建 (1)首先创建projecttest,測试代码例如以下: 1) test.h void test_print ...
- qt使用动态库(DLL)
本文主要讲解在QT开发环境中如何使用VC生成的DLL及QT自身生成的DLL.至于其它情况本文不作讨论. 连接库分为2种 (1)动态连接库,通常有.h .lib .dll三个文件,功能实现在dll中 ( ...
- Qt DLL总结【二】-创建及调用QT的 DLL(三篇)good
目录 Qt DLL总结[一]-链接库预备知识 Qt DLL总结[二]-创建及调用QT的 DLL Qt DLL总结[三]-VS2008+Qt 使用QPluginLoader访问DLL 开发环境:VS20 ...
- Qt DLL总结【二】-创建及调用QT的 DLL
开发环境:VS2008+Qt4.7.4 最近看了不少Qt的DLL例子,总结一下如何创建和调用QT 动态链接库. 先讲一下对QT动态链接库的调用方法,主要包括: 1.显式链接DLL,调用DLL的全局函数 ...
随机推荐
- win7下文件名不能定义为con(任何文件格式)
从linux传输压缩包到win7下解压缩,总是提示出错,可是在linux下解压都很正常,于是定位出错的文件,发现是con.c和con.h文件,经排查,原因如下: CON是DOS下的特殊设备名 如下由系 ...
- 为什么要用on()而不直接使用click
为什么要用on()而不直接使用clickhttp://stackoverflow.com/questions/10082031/why-use-jquery-on-instead-of-clickht ...
- Sublime 编辑器主题
Sublime主题分为两种 一种是编辑框中的代码的颜色 另一种是编辑器本身的颜色(不只是颜色哟 Sublime编辑器左边侧边栏的字很小对不对 !有了主题就可以改) 这个主题叫做Soda http ...
- Linux第三方源
由于版权等各方面原因,很多时候在基础安装完Linux后,满多软件并不包含在yum(对于Ubuntu可能是apt-get)源中. 因此可以去下载第三方源,安装下载第三方软件.当然,如果习惯了源代码编译安 ...
- 基于Visual C++2013拆解世界五百强面试题--题3-打印螺旋数组
请用C语言实现 输入N,打印N*N矩阵 比如 N = 3, 打印: 1 2 3 8 9 4 7 6 5 N = 4, 打印 1 2 3 4 12 13 14 5 11 16 ...
- HDU 2501 Tiling_easy version
递推式:f[n]=2*f[n-2]+f[n-1] #include <cstdio> #include <iostream> using namespace std; ]; i ...
- Binary Tree Level Order Traversal II --leetcode C++
考察点 广度优先遍历--层次遍历 STL内容器的用法 广度优先遍历的时候,首先应该想到的就是借助于队列.还需要在遍历下一层之前保存当前层节点的数量 代码很简单: class Solution { pu ...
- Apache 错误代码配置
ErrorDocument 400 /error_pages/400.htmlErrorDocument 401 /error_pages/401.htmlErrorDocument 403 /err ...
- mac下配置cocos2d-x3.0
今天看到3.0的正式版公布了,就马上荡下来试试3.0,以下记录下环境变量配置过程 打开用户文件夹下.bash_profile文件,配置环境 1.首先配置下android sdk,我的是在opt文件夹下 ...
- js推断指定函数、变量是否存在的方法
//推断是否存在指定函数 function isExitsFunction(funcName) { try { if (typeof (eval(funcName)) == "functio ...