官方教程: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(); }