参考文章: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
}
#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();
}