Qt Library 链接库

官方教程: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 中如何创建和引用静态和动态链接库

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

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.直接使用即可

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

  

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

    

  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造成的解决方法

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

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

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

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

  引用函数:

  

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

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

QtDllLIb* getQtDllLIb()  
{  
    return new QtDllLIb();  
}  
原文地址:https://www.cnblogs.com/lwngreat/p/5640233.html