一、创建so库

1.文件-->新建文件或项目-->Library->C++ Library,如下图

2.工程命名为Example

3.一直下一步就可以

4、工程创建完成,如下图

5、删除Example_global.h

6、配置.pro文件

# 设置输出目录
DESTDIR = $$PWD/output
#只生成.so文件
CONFIG += plugin

7、在Example.h头文件中添加int Add(int a,int b)函数

8、在example.cpp中实现int Add(int a,int b)

9、构建,在Example工程目录下回多出1个output目录,生成的.so文件就存在在output目录下。

二、调用

1、文件--》新建文件或项目---》Application-->Qt Widegets Application

2、工程名称为TestSo,一直点击下一步就完成。

3、在TestSo目录下新建1个include和lib目录,用来存放所要调用so库的头文件和.so文件,如下图

4、修改.pro文件

# 设置头文件路径
INCLUDEPATH += $$PWD/include
# 设置库路径和库名称
LIBS += -L$$PWD/lib/ -lExample
# 设置输出目录
DESTDIR = $$PWD/output
# 在构建完成后将 lib 目录下的文件拷贝到 output 目录
QMAKE_POST_LINK += $$quote(cp -r $$PWD/lib/* $$PWD/output/)

5、引入头文件,调用Add方法,并点击构建,如下图

6、在TestSo目录下就可以生成1个output,里面存放可执行程序TestSo和libExample.so

7、单独运行TestSo,在终端上输入./TestSo,出现找不到链接库

8、在终端输入ldd TestSo,发现libExample.so not found,

ldd TestSo

解决方法:

方法一:

1、在终端上设置链接库的路径

export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH

2.ldd在查看一下,libExample.so 已经链接成功

3、执行./TestSo

./TestSo

方法二:

1、创建1个脚本文件,命名为run.sh

vi run.sh

2、在run.sh文件中添加一下内容

#!/bin/bash
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
./TestSo

3、修改run.sh权限

chmod 775 run.sh

4、在终端上执行./run.sh

./run.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94521.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94521.shtml
英文地址,请注明出处:http://en.pswp.cn/web/94521.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】蒙特卡罗方法:原理、应用与未来趋势

作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 之前的文章参考下面的链接&#xf…

区块链技术原理(18)-以太坊共识机制

文章目录前言什么是共识?什么是共识机制?共识机制的核心目标共识机制的类型PoW(工作量证明)协议:(2015-2022)PoS(权益证明)协议:(PoS,…

java基础(十五)计算机网络

网络模型概述 为了使得多种设备能通过网络相互通信,并解决各种不同设备在网络互联中的兼容性问题,国际标准化组织(ISO)制定了开放式系统互联通信参考模型(OSI模型)。与此同时,TCP/IP模型作为实际…

idea将服务封装为一个jar包

你使用的是 IntelliJ IDEA 2018,这个版本虽然不是最新的,但完全支持通过 图形化界面 打 JAR 包(无需命令行),非常适合你在公司内部将 Snowflake 模块打包成通用组件。下面我将 手把手、一步一步、图文流程式地教你&…

ZYNQ [Petalinux的运行]

一、下载ubuntu 下载地址很多,这里提供了一个:http://mirrors.aliyun.com/ubuntu-releases/14.04/ 推荐开始浏览器下载之后复制下载链接使用迅雷下载。 二、虚拟机安装Ubuntu vmware中安装Ubutun–这部分不展示 安装ssh sudo apt install openssh-s…

excel 破解工作表密码

破解Excel工作表密码可通过易用宝工具、VBA脚本或修改文件格式实现,具体方法需根据文件类型和密码保护类型选择。 ‌使用易用宝工具(推荐)‌ 适用于Excel 2007及以上版本,操作简便且无需编程基础: 下载安装Excel易用…

Deepseek + RAGFlow 搭建本地知识库问答系统

Deepseek RAGFlow 搭建本地知识库问答系统原因为什么要本地部署RAG模型和微调模型区别本地部署流程1. 下载 ollama ,通过ollama把Deepseek模型下载到本地运行。2. 下载RAGFlow 源代码和 Docker ,通过Docker部署RAGFlow。3. 在RAGFlow中构建个人知识库并…

elementui附件上传自定义文件列表,实现传完即可预览、下载、删除,二次封装el-upload

背景当前 elementui 的文件上传组件在上传完文件之后只支持删除,用户希望可以看到附件信息,还可以预览自己刚刚上传但未提交的文件,还希望可以下载,因为公司的下载功能当前是通过 OnlyOffice 实现了文件格式转换,所以我…

linux的conda配置与应用阶段的简单指令备注

1.新建某虚拟环境 conda create -n 虚拟环境名 pythonPython版本号 (-y)2.退出当前虚拟环境 conda deactivate3.查看当前conda环境下所有的虚拟环境 conda info --envs4.查看conda版本和位置 conda --versionwhich conda5.激活某个conda虚拟环境 conda activate 虚拟环境名

虚拟化技术 ——KVM

一、KVM 技术简介 KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是 Linux 内核原生支持的全虚拟化解决方案,依托 CPU 的硬件虚拟化技术(Intel VT-x/AMD-V)实现高效的虚拟机运行。它将 Linux 内核转…

线程间Bug检测工具Canary

Canary1.Introduction2.Approach2.1.数据依赖分析2.2.线程间依赖分析3.Bug检测4.Evaluation参考文献1.Introduction 主要做跨线程value-flow bug检查,下面代码中两个函数中存在指向关系:1. x→o1x \rightarrow o_1x→o1​, b→o2b \rightarrow o_2b→o2…

AEB 强制来临,东软睿驰Next-Cube-Lite有望成为汽车安全普惠“破局器”

AEB 强制时代正在悄然谱写“普惠安全”的行业底色。日前,备受关注的强制性国家标准《轻型汽车自动紧急制动系统技术要求及试验方法》(以下简称“新国标”)意见征求阶段已经结束。该标准将替代现行国标GB/T 39901-2021,计划于2028年…

css的white-space: pre

用户从别的地方复制的配置文件,粘贴到输入框内,需要保留原始格式发送给后端。核心步骤:### 1. 格式保持机制 - white-space: pre :这是最关键的CSS属性,确保所有空格、制表符、换行符都被保留 - wrap"off" &…

【AI解读源码系列】ant design mobile——Space间距

前言 笔者目前业务主要围绕ant design mobile组件库来交付H5前端工作。 故此出此专栏来解读每一个组件是如何实现的。 本文基于AI来解读Space组件。 文档链接: https://mobile.ant.design/zh/components/space 源码: https://github.com/ant-design/ant-…

《用餐》,午餐食堂即景小诗分享(手机/小视频/光盘/养生)

大妈食堂碎碎念,怪罪手机延工期。 笔记模板由python脚本于2025-08-21 19:34:46创建,本篇笔记适合喜欢友善生活和诗的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Python官…

高通平台WIFI学习-- 基于WCN6750 Tri-Band 2x2 MIMO 802.11ax的讲解

一 前言: 官方资料显示WLAN支持如下的Key features ■ Compliant with IEEE 802.11a/b/g/n/ac/ax ■ Supports 2x2 multi-user multiple-input multiple-output (MU-MIMO) ■ Up to 2.9 Gbps data rate (2x2 160 MHz) ■ Tri-band 2.4 GHz/5 GHz/6 GHz support ■ 20 MHz…

javaweb开发笔记——XML_Tomcat10_HTTP

第四章 XML_Tomcat10_HTTP 一 XML XML是EXtensible Markup Language的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。 可扩展 三个字表面上的意思是XML允许自定义格式。但这不代…

Python从入门到自动化运维

文章目录IPO编程方式、print、input函数print() -- 输出信息到屏幕input() -- 读取用户的输入基本数据类型int、float、bool、str常用 str 操作方法格式化字符串的三种方式数据验证方法字符串拼接字符串去重数据类型转换函数容器类型列表(list):可变、可重复、有序元…

【数据可视化-98】2025年上半年地方财政收入Top 20城市可视化分析:Python + Pyecharts打造炫酷暗黑主题大屏

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

【基础-单选】向服务器提交表单数据,以下哪种请求方式比较合适

向服务器提交表单数据,以下哪种请求方式比较合适A.RequestMethod.GET B.RequestMethod.PUT C.RequestMethod.POST D.RequestMethod.DELETE 解释如下: 在HarmonyOS应用开发中,向服务器提交表单数据,C. RequestMethod.POST 是比较合…