ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication

一:创建静态库
1)
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
一直下一步到结束

2)MyLib.pro不需要动默认就好

QT       -= gui
TARGET = MyLib
TEMPLATE = lib
DEFINES += MYLIB_LIBRARY
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
        mylib.cpp
HEADERS += \
        mylib.h \
        mylib_global.h 
unix {
    target.path = /usr/lib
    INSTALLS += target
}

3)将mylib_global.h文件内容拷贝到mylib.h, 将mylib_global.h文件删除
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
4)编写mylib.h,mylib.cpp
mylib.h, 只是加了: void Hello();

#ifndef MYLIB_H
#define MYLIB_H

#include <QtCore/qglobal.h>

#if defined(MYLIB_LIBRARY)
#  define MYLIBSHARED_EXPORT Q_DECL_EXPORT
#else
#  define MYLIBSHARED_EXPORT Q_DECL_IMPORT
#endif


class MYLIBSHARED_EXPORT MyLib
{

public:
    MyLib();
    void Hello();
};

#endif // MYLIB_H

mylib.cpp

#include "mylib.h"
#include <iostream>
using namespace std;

MyLib::MyLib()
{
}

void MyLib::Hello()
{
    cout<<"Hello!"<<endl;
}

5)编译生成.so文件
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
二:静态库libMyLib.so的使用
1) 新建Plain C++ Aplication工程
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
直接到完成

2) 调用dll
在工程目录下创建lib文件夹,将已经生成的libMyLib.so libMyLib.so.1 libMyLib.so.1 .0 libMyLib.so.1 .0.0拷贝到该文件价下
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
将MyLib.h文件拷贝到工程DllTest文件夹下,并且包含头文件
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
导入dll, 工程右键添加外部库,已经复制在工程的lib文件夹了ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
编辑Dll.pro删除CONFIG -= qt,否则会报如下错误
error: ‘QtCore/qglobal.h’ file not found
原因:-号代表禁用, CONFIG -= qt会禁用关于QT的库
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
编辑main.cpp

#include <iostream>
#include "mylib.h"
using namespace std;

int main()
{
    MyLib lib;
    lib.Hello();
    return 0;
}

到此编译一下,生成可执行文件了,但是还不可以运行

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
三:运行
1)将libMyLib.so libMyLib.so.1 libMyLib.so.1 .0 libMyLib.so.1 .0.0拷贝到可执行文件夹下
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
2)直接运行会报错:error while loading shared libraries: libMyLib.so.1: cannot open shared object file: No such file or directory
还需要在配置文件中配置Lib路径,打开文件.bashrc文件添加lib所在文件路径
注意:第一个lib是文件夹名,第二个是文件类型lib
$ export LD_LIBRARY_PATH=/home/whfml/AQTTest/DllTest/lib/lib:$LD_LIBRARY_PATH

ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication
运行即可,你就会发现惊喜
ubuntu18 + QT + 静态库创建和调用+Plain C++ Aplication