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

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

一、简述

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

二、效果


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

1、工程结构

    

2、工程创建注意事项

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


2、创建静态库

扫描二维码关注公众号,回复: 1443015 查看本文章


3、调用库


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

四、源文件

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 <QDebug>
class TESTLIBSHARED_EXPORT TestLib
{

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

#endif // TESTLIB_H

testlib_global.h文件

#ifndef TESTLIB_GLOBAL_H
#define TESTLIB_GLOBAL_H

#include <QtCore/qglobal.h>

#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 <QDebug>

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 <QCoreApplication>
#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();
}

猜你喜欢

转载自blog.csdn.net/nanfeibuyi/article/details/80417194