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

匿名 (未验证) 提交于 2019-12-03 00:18:01

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!