官方教程:http://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application

http://qimo601.iteye.com/blog/1397936

在VS2013  QT 中如何创建和引用静态和动态链接库

一、静态库的创建和调用最为简单

Qt Library  链接库-LMLPHPQt Library  链接库-LMLPHP

1.生成两个文件 qtstaticlib.h qtstaticlib.cpp 直接在函数里面写函数即可

#ifndef QTSTATICLIB_H
#define QTSTATICLIB_H
class QtStaticLib
{
public:
QtStaticLib();
~QtStaticLib();
int add(int a, int b);
private: };
extern "C" int subtract(int a, int b); //普通函数的调用 #endif // QTSTATICLIB_H
#include "qtstaticlib.h"

QtStaticLib::QtStaticLib()
{ } QtStaticLib::~QtStaticLib()
{ }
int QtStaticLib::add(int a, int b){
return a + b;
} int subtract(int a, int b){
return a - b;
}

2.编译生成  QtStaticLib.lib 文件

3.调用 QtStaticLib.lib文件 需要要  qtstaticlib.h 和QtStaticLib.lib 即可

  复制一份 qtstaticlib.h 到要用用的工程的目录下并添加引用,

  qtstaticlib.lib 复制到工程目录下,两种方式添加

    【1.    #pragma comment(lib, "D:/WorkProgram/ComputerManager/x64/Debug/QtStaticLib.lib")  2. 添加库目录,添加库文件的方法】

4.直接使用即可

二、动态链接库的创建和引用

  Qt Library  链接库-LMLPHPQt Library  链接库-LMLPHPQt Library  链接库-LMLPHP

  1. stdafx.h 和 stdafx.cpp 没有内容,把qtdlllib_global.h中的内容放到了qtdlllib.h 中了  

    Qt Library  链接库-LMLPHP

  2.编写功能函数

   

#ifndef QTDLLLIB_H
#define QTDLLLIB_H #include <QtCore/qglobal.h>
#ifdef QTDLLLIB_LIB
# define QTDLLLIB_EXPORT Q_DECL_EXPORT
#else
# define QTDLLLIB_EXPORT Q_DECL_IMPORT
#endif class QTDLLLIB_EXPORT QtDllLib
{
public:
QtDllLib();
~QtDllLib();
int add(int a, int b); private: };
extern "C" QTDLLLIB_EXPORT int subtract(int a, int b); #endif // QTDLLLIB_H
#include "qtdlllib.h"

QtDllLib::QtDllLib()
{ } QtDllLib::~QtDllLib()
{ }
int QtDllLib::add(int a,int b)
{
return a + b;
}
int subtract(int a, int b){
return a - b;
}

3.编译  预编译头相关错误,就是删除stdafx.h造成的解决方法

Qt Library  链接库-LMLPHP

4.编译生成 QtDllLib.dll 和 QtDllLib.lib文件

5 应用动态链接库 分为隐式引用和显示引用

  隐式引用,需要文件QtDllLib.dll 和 QtDllLib.lib和 QtDllLib.h (方法和静态链接库相同)

  显示引用:1.引用函数 需要文件QtDllLib.dll 2.引用类 需要文件QtDllLib.dll 和 QtDllLib.h

  引用函数:

  Qt Library  链接库-LMLPHP

  引用类:需要在dll类中写一个函数返回  类的实例指针  这样就像调用函数一样  返回一个类的实例指针 来使用

 就是在编写dll的时候添加如下,然后就像调用函数一样,有 返回值 QtDLlLib 是自定义的 所以需要引用头文件。

QtDllLIb* getQtDllLIb()
{
return new QtDllLIb();
}
05-07 15:46