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

一:创建静态库
1)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一直下一步到结束

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文件删除
在这里插入图片描述
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文件
在这里插入图片描述

/
二:静态库libMyLib.so的使用
1) 新建Plain C++ Aplication工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
直接到完成

2) 调用dll
在工程目录下创建lib文件夹,将已经生成的libMyLib.so libMyLib.so.1 libMyLib.so.1 .0 libMyLib.so.1 .0.0拷贝到该文件价下
在这里插入图片描述
将MyLib.h文件拷贝到工程DllTest文件夹下,并且包含头文件
在这里插入图片描述
导入dll, 工程右键添加外部库,已经复制在工程的lib文件夹了在这里插入图片描述
编辑Dll.pro删除CONFIG -= qt,否则会报如下错误
error: ‘QtCore/qglobal.h’ file not found
原因:-号代表禁用, CONFIG -= qt会禁用关于QT的库
在这里插入图片描述
编辑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拷贝到可执行文件夹下
在这里插入图片描述
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

在这里插入图片描述
运行即可,你就会发现惊喜
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值