Linux Qt創建和調用so庫的詳細教程

一、創建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 是比較合…