记录一下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自己做动态库给自己使用)的更多相关文章

  1. QT5 动态链接库的创建和使用

    记录一下QT5 动态链接库的创建和使用 在文章的最后有完成的代码供下载 1.创建动态链接库 先新建一个库项目 选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld 再点击下一步 ...

  2. QT中添加 动态库(.so) 和 静态库 (.a) 的方法

    在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 ...

  3. Qt——动态库的创建和使用

    一.动态库是什么 很多人写程序的人都见过.lib和.dll文件,对动态库也略有耳闻. 生成动态库后可以得到两个文件,后缀名分别是.lib以及.dll. 简而言之,.lib称为导入库,相当于头文件:.d ...

  4. 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

     一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件能够指定父对象 QTimer *timer = QTime ...

  5. Qt编写自定义控件插件开放动态库dll使用(永久免费)

    这套控件陆陆续续完善了四年多,目前共133个控件,除了十几个控件参考网友开源的代码写的,其余全部原创,在发布之初就有打算将动态库开放出来永久免费使用,在控件比较完善的今天抽了半天时间编译了多个qt版本 ...

  6. windows库的创建和使用:静态库+动态库

    windows库的创建和使用:静态库+动态库   一.静态库的创建和使用 1. 静态库创建 (1)首先创建projecttest,測试代码例如以下: 1) test.h void test_print ...

  7. qt使用动态库(DLL)

    本文主要讲解在QT开发环境中如何使用VC生成的DLL及QT自身生成的DLL.至于其它情况本文不作讨论. 连接库分为2种 (1)动态连接库,通常有.h .lib .dll三个文件,功能实现在dll中 ( ...

  8. Qt DLL总结【二】-创建及调用QT的 DLL(三篇)good

    目录 Qt DLL总结[一]-链接库预备知识 Qt DLL总结[二]-创建及调用QT的 DLL Qt DLL总结[三]-VS2008+Qt 使用QPluginLoader访问DLL 开发环境:VS20 ...

  9. Qt DLL总结【二】-创建及调用QT的 DLL

    开发环境:VS2008+Qt4.7.4 最近看了不少Qt的DLL例子,总结一下如何创建和调用QT 动态链接库. 先讲一下对QT动态链接库的调用方法,主要包括: 1.显式链接DLL,调用DLL的全局函数 ...

随机推荐

  1. 【转】AC算法详解

    原文转自:http://blog.csdn.net/joylnwang/article/details/6793192 AC算法是Alfred V.Aho(<编译原理>(龙书)的作者),和 ...

  2. 帝国cms灵动标签下常用标签

    这里简单整理下灵动标签下的常用标签 标题名称:<?=$bqr['title']?>  <?=esub($bqr[title],22)?> 限制字符22个 标题链接:<?= ...

  3. http://qt-project.org/wiki/Category:Developing_with_Qt::QtWebKit#ff7c0fcd6a31e735a61c001f75426961

    404: Not Found | Qt Project QtWebKit documentation http://dwz.cn/hr2013

  4. 光学基础知识:白光、颜色混合、RGB、色彩空间

    1665年,牛顿(Isaac Newton)进行了太阳光实验,让太阳光通过窗板的小圆孔照射在玻璃三角棱镜上,光束在棱镜中折射后,扩散为一个连续的彩虹颜色带,牛顿称之为光谱,表示连续的可见光谱.而可见光 ...

  5. JavaScript中的事件处理程序

    JavaScript和HTML之间的交互是通过事件实现的.事件,就是文档或者浏览器窗口中发生的一些特定的交互瞬间.可以使用事件处理程序来预订事件,以便在事件发生的时候执行响应的代码.这种观察者模式的模 ...

  6. SVN使用技巧

    安装 下载SVN服务端:VisualSVN Server https://www.visualsvn.com/downloads/ 安装,下一步...(更改地址,Location是安装目录,Repos ...

  7. C#中泛型、程序集一些基本运用(Fifteenth Day)

    今天主要在学习了泛型和程序集以及一些细碎的知识的运用.下面我就把今天所学的总结一下. 理论: 泛型: * 英文名字是Generic,可以让多个类型共享一组代码,泛型允许我们声明类型参数化,可以用不同的 ...

  8. CheckBox控件实现选项的选中

    1:设置控件属性 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  9. D - 1sting(相当于斐波那契数列,用大数写)

    Description You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ...

  10. vmware能够ping通内网,上不了外网的解决方法

    一般这是由于里面的路由域名服务器没有配置好. issta@ubuntu:~$ ping www.baidu.com ping: unknown host www.baidu.com 先看一下地址解析器 ...