QT动态库使用(2)

参考文章:http://devbean.blog.51cto.com/448512/319479

QT版本 5.5.1_MSVC2013

一、建立dll工程,工程名为lib

目录如下

lib

  |-- lib.pro

  |-- lib.h

  |-- lib.cpp

  |-- lib_global.h


各个文件内容如下:

lib.pro

#-------------------------------------------------
#
# Project created by QtCreator 2016-05-10T15:16:39
#
#-------------------------------------------------

TARGET = lib
TEMPLATE = lib

QT += widgets

DEFINES += LIB_LIBRARY

SOURCES += lib.cpp

HEADERS += lib.h\
        lib_global.h

unix {
    target.path = /usr/lib
    INSTALLS += target
}


lib_global.h

#ifndef LIB_GLOBAL_H
#define LIB_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(LIB_LIBRARY)
#  define LIBSHARED_EXPORT Q_DECL_EXPORT
#else
#  define LIBSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // LIB_GLOBAL_
由于pro文件中定义了LIB_LIBRARY,所以LIBSHARED_EXPORT被定义为Q_DECL_EXPORT

lib.h

#ifndef LIB_H
#define LIB_H

#include "lib_global.h"
#include <QMainWindow>
#include <QWidget>

class LIBSHARED_EXPORT MainWindow : public QMainWindow
{

public:
    MainWindow(QWidget *parent = 0);
};

#endif // LIB_H
定义导出类

lib.cpp 

#include "lib.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

}
导出类实现


二、下面看下如何使用生成的动态库,建立如下工程,工程名test

test

   |-- test.pro

   |-- main.cpp


各个文件内容如下

test.pro

QT += widgets

TARGET = test
TEMPLATE = app

SOURCES += \
    main.cpp

INCLUDEPATH += ../mylib/include
LIBS += ../mylib/lib/lib.lib

注意库的头文件路径和lib文件路径要根据自己实际写,生成好可执行文件后,将dll拷贝到可执行文件目录或系统目录,即可运行



main.cpp

#include <QApplication>
#include "lib.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;
    w.show();

    return a.exec();
}

猜你喜欢

转载自blog.csdn.net/zhuce0001/article/details/51363829