QT 动态库和静态库的实现和调用
一、简述
二、效果

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

2、工程创建注意事项
1、创建动态库(共享库)

2、创建静态库

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_Htestlib_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_Hteststaticlib.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(); } 文章来源: QT 动态库和静态库的实现和调用