QT 动态库和静态库的实现和调用

QT 动态库和静态库的实现和调用

一、简述

    加强某一部分代码的保密性,将其打包成动态库或静态库;或者是调用其他开源的库文件。

二、效果

QT 动态库和静态库的实现和调用_第1张图片

三、工程结构及创建注意事项

1、工程结构

    QT 动态库和静态库的实现和调用_第2张图片

2、工程创建注意事项

1、创建动态库(共享库)

QT 动态库和静态库的实现和调用_第3张图片

2、创建静态库

QT 动态库和静态库的实现和调用_第4张图片

3、调用库

QT 动态库和静态库的实现和调用_第5张图片

注意:生成库只需“构建”,不需要“执行”;注意库文件的路径!

四、源文件

TestLib.pro文件

QT       -= gui

TARGET = TestLib
TEMPLATE = lib

DEFINES += TESTLIB_LIBRARY

SOURCES += testlib.cpp

HEADERS += testlib.h\
        testlib_global.h

unix {
    target.path = /usr/lib
    INSTALLS += target
}

testlib.h文件

#ifndef TESTLIB_H
#define TESTLIB_H

#include "testlib_global.h"
#include 
class TESTLIBSHARED_EXPORT TestLib
{

public:
    TestLib();
    void MyLib();//自己写的库函数
};

#endif // TESTLIB_H

testlib_global.h文件

#ifndef TESTLIB_GLOBAL_H
#define TESTLIB_GLOBAL_H

#include 

#if defined(TESTLIB_LIBRARY)
#  define TESTLIBSHARED_EXPORT Q_DECL_EXPORT
#else
#  define TESTLIBSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // TESTLIB_GLOBAL_H

testlib.cpp文件

#include "testlib.h"

TestLib::TestLib()
{
}

void TestLib::MyLib()
{
    qDebug()<<"This is a Test!";
}

TestStaticLib.pro文件

QT       -= gui

TARGET = TestStaticLib
TEMPLATE = lib
CONFIG += staticlib

SOURCES += teststaticlib.cpp

HEADERS += teststaticlib.h
unix {
    target.path = /usr/lib
    INSTALLS += target
}

teststaticlib.h文件

#ifndef TESTSTATICLIB_H
#define TESTSTATICLIB_H
#include 

class TestStaticLib
{

public:
    TestStaticLib();
    void MyStaticLib();//自己写的库函数
};

#endif // TESTSTATICLIB_H

teststaticlib.cpp文件

#include "teststaticlib.h"


TestStaticLib::TestStaticLib()
{
}

void TestStaticLib::MyStaticLib()
{
    qDebug()<<"This is a MyStaticLib!";
}

UseMyLib.pro文件

SOURCES += \
    main.cpp
#根据实际路径添加                       库文件所在文件夹                            生成的库文件libTestLib.a(只写TestLib)
LIBS += -LD:\QTProject\build-TestLib-Desktop_Qt_5_2_0_MinGW_32bit-Debug\debug -lTestLib \
    -LD:\QTProject\build-TestStaticLib-Desktop_Qt_5_2_0_MinGW_32bit-Debug\debug -lTestStaticLib

main.cpp文件

#include 
#include "../TestLib/testlib.h"
#include "../TestStaticLib/teststaticlib.h"

int main(int argc, char* argv[])
{
    QCoreApplication app(argc, argv);

    //动态库调用
    TestLib lib;
    lib.MyLib();

    //静态库调用
    TestStaticLib staLib;
    staLib.MyStaticLib();

    return app.exec();
}

你可能感兴趣的:(QT)