Qt动态链接库的创建和使用

********************************************************************************              Qt Creator                 *********************************************************************************************

一、生成dll文件

1、创建一个C++库项目。

  新建->Library->C++库,然后点击"choose";

  位置->类型,选择共享库;

  模块的勾选看情况。

  最后,工程中有3个文件。mylib.cpp、mylib.h、mylib_global.h。

2、添加内容,即库文件要实现的功能。

  例:1、创建一个ui文件

    2、修该mylib.cpp、mylib.h文件   

 1 #include "mylib_global.h"
 2 #include <QDialog>
 3 namespace Ui
 4 {
 5   class Mylib;
 6 }
 7 class MYLIBSHARED_EXPORT Mylib :public QDialog
 8 {
 9 public:
10   Mylib(QWidget *parent = 0);
11 private:
12   Ui::Mylib *ui;
13 };
1 #include "mylib.h"
2 #include "ui_mylib.h"
3 Mylib::Mylib(QWidget *parent):
4   QDialog(parent),
5   ui(new Ui::Mylib)
6 {
7   ui->setupUi(this);
8 }

3、构建工程,在生成的debug目录中可以看到生成的3个,即.a、.o和.dll文件。

二、调用dll文件

1、修改准备调用dll'文件的工程的配置文件.pro

  #让本项目可以找到mylib.h和mylib_global.h这两个文件

  INCLUDEPATH += ../mylib

  #这一行则需要告诉编译器(注意,这里是编译器!)到哪里去找到这个 dll 文件

  #LIBS += ../build-mylib-Desktop_Qt_5_9_3_MinGW_32bit-Debug/debug/mylib.dll

2、将之前的dll文件放到本工程的源码目录下并加上头文件#include "mylib.h",即可调用连接库。

3、构建工程,将之前的dll文件放到生成的exe的同级目录下,然后程序即可运行。

附:1、在构建第一个工程的时候,可以在弹出的一个对话框中修改dll等文件的生成目录;我们可以新建目录bin_debug,将2个工程的生成文件都放到其中。

  2、似乎可以#include "../bin_debug/mylib.h"

********************************************************************************              VS+Qt                 *********************************************************************************************

2018-09-20

1、新建一个Qt的Appication工程;(工程名即解决方案名)

2、在解决方案中新建lib工程。

  在新建的工程中,直接使用导出符即可。

3、使用lib中的内容

#include "../MyLib/lib1.h"
#pragma comment(lib, "../x64/Debug/lib1.lib")

  .ui文件的导出,只能是指针

***********  2018.10.9  *******************************************************************************************

  生成动态链接库小结:主要有2点

一、生成动态链接库的位置

  1、可以在配置文件(配置项)中设置

  2、在代码中指明(最好不写文件的后缀名,linux中)

二、动态链接库对应的代码(头文件)

三、导出类的宏,在建立动态链接库的时候自动生成;一般不需要自己操心。

原文地址:https://www.cnblogs.com/wangbin-heng/p/9461398.html