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