Qt動態庫的連結問題
前言
之前在Qt 引用動態庫經常出錯,要麼編譯找不到庫,要麼執行時候出錯,其實就是路徑的問題, 這裡總結一下
正文
Qt中引用動態庫,動態庫有兩個檔案,一個是.lib連結檔案,一個是.dll動態庫檔案,
在Qt pro檔案引用的時候
LIBS += -L../lib -lReceiver
這個表示lib檔案在工程檔案的上一層目錄中的lib資料夾中,只需要將.lib檔案的路徑引導正確即可。
如果.lib檔案就在pro檔案的當前目錄下,那麼可以省掉-L 項
直接寫成 LIBS += -lReceiver
建議在寫路徑的適合加PWD指示當前目錄,例如
LIBS += -L$$PWD/lib -llibReceiver
然後 打包的時候 只需要將dll庫檔案拷貝到與exe執行檔案統計目錄下即可自動查詢並執行,打包檔案中不再需要.lib檔案
工程檔案中寫的庫連結 是編譯的時候去這個路徑找lib連結庫, 但是打包出來的檔案執行不會根據這個路徑去查詢dll檔案
記住一點:
編譯是去查詢 lib檔案 所以路徑只要寫lib的路徑就好,而執行就需要dll檔案,所以在打包檔案中執行程式的時候會在exe同級目錄下去查詢dll檔案,如果沒有,就會報錯
相關推薦
Qt動態庫的連結問題
前言 之前在Qt 引用動態庫經常出錯,要麼編譯找不到庫,要麼執行時候出錯,其實就是路徑的問題, 這裡總結一下 正文 Qt中引用動態庫,動態庫有兩個檔案,一個是.lib連結檔案,一個是.dll動態庫檔案, 在Qt pro檔案引用的時候 LIBS += -
【Qt】Qt動態庫和靜態庫的建立和使用
動態庫(共享庫)的建立 在Qt Creator中新建專案,選擇Library 點選“Choose”進入下一步 選擇建立庫的型別:共享庫 選擇Kit套件 選擇需要的模組 配置工程路徑、名字等 Qt Creator自動建立的檔案
深入理解LINUX下動態庫連結器/載入器ld-linux.so.2
最近在Linux 環境下開發,搞了好幾天 Compiler 和 linker,覺得有必要來寫一篇關於Linux環境下 ld.so的文章了,google上搜索了很多相關介紹性的文件,發現國內百度上卻很少有相關類文件,覺得有必要來梳理一下: ld-linux.so.2 是
Qt動態庫的生成和使用
編譯成動態庫 開啟工程檔案.pro TEMPLATE = lib TARGET = configwifi SOURCES刪除main.cpp make clean make 生成.so檔案 armv6z-mediatek451_001_vfp-linux-gnueabi-s
qt動態庫與靜態庫編譯、應用以及pri檔案建立
一. 靜態庫的生成 1. 測試目錄: lib 2. 原始碼檔名: mywindow.h, mywindow.cpp 3. 編寫專案檔案: mywindow.pro 注意兩點: TEMPLATE = libCONFIG += staticlib 4. 生成M
gcc使用---動態庫連結靜態庫
00001f18 a _DYNAMIC 00001ff4 a _GLOBAL_OFFSET_TABLE_w _Jv_RegisterClasses 00001f08 d __CTOR_END__ 00001f04 d __CTOR_LIST__
動態庫連結踩坑記
問題 最近,在一系列的編寫程式碼、編譯、正確的形成可執行檔案後,將可執行檔案執行在生成環境時,出現了應該是在編譯連結時最常見的錯誤:Symbol not defined。下面,將會逐一的從問題是如何產生,以及如何解決進行說明,就當做是自我的一個問題記錄。 原
動態庫、靜態庫編譯測試:含靜態庫連結動態庫、靜態庫,動態庫連結靜態庫、動態庫
本文的目的是測試各種型別庫的編譯後的使用效果,包括庫又連結其他庫的編譯方法,使用方法,依賴性等。 太長不看版:請跳至文章最後的總結對比表。 一。內容包含: ①靜態庫libbb.a依賴靜態庫libaa.a的測試; ②靜態庫libbb.a依賴動態庫libaa.so的測試;
linux Qt 動態庫製作以及使用方法
一、Qt動態庫的製作 (1)、新建 選擇目錄 選擇需要的模組,如果需要介面則選擇QtGui等。 (2)、編寫簡單程式碼以及編譯 編寫簡單的列印程式碼,然後點選執行,之後彈出如下視窗: 點選“取消”,之後可在工程目錄下找到 這就是我們需要的動態連結庫。 二
關於QT動態庫,利用動態庫匯入介面(例項)
最近需要搞懂一個事情,就是QT如何用使用動態庫。我們需要解決以下幾個問題: 1.有時候我們不希望在當前工程下設計介面,而是希望把介面做成一個動態連結庫,然後主程式呼叫這個動態連結庫,然後主程式把這個動態庫中包含的介面show出來。 2.我們希望進行外掛式開發,也就
GCC同時使用靜態庫和動態庫連結
一 在應用程式需要連線外部庫的情況下,linux預設對庫的連線是使用動態庫,在找不到動態庫的情況下再選擇靜態庫。使用方式為:
Qt動態連接庫/靜態連接庫創建與使用,QLibrary動態加載庫
成功 方式 ++ 版本 應該 blog 不包含 對比 body 版權聲明:若無來源註明,Techie亮博客文章均為原創。 轉載請以鏈接形式標明本文標題和地址: 本文標題:Qt動態連接庫/靜態連接庫創建與使用,QLibrary動態加載庫 本文地址:http://te
關於QT呼叫MFC動態庫時傳遞中文字元亂碼問題
凡是亂碼,一定是解碼方式不對,在此做個小小的總結。 MFC CString和QT QString都採用unicode編碼 MFC中的char *採用GBK編碼,QT中的char *採用UTF-8編碼,這裡關於字元的編碼,有個規律就是和原始碼檔案儲存的編一致。  
Linux下動態庫(.so)和靜態庫(.a) 的區別 Linux下動態庫(.so)和靜態庫(.a) 的區別 動態庫(.so)連結靜態庫(.a)的情況總結
Linux下動態庫(.so)和靜態庫(.a) 的區別 靜態庫在程式編譯時會被連線到目的碼中,程式執行時將不再需要該靜態庫。編譯之後程式檔案大,但載入快,隔離性也好。 動態庫在程式編譯時並不會被連線到目的碼中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。多個
Linux:基礎IO(檔案描述符分配規則)(重定向)(inode)(軟硬連結)(動態庫靜態庫)
目錄 檔案描述符的分配規則 重定向原理 FILE 總結 理解檔案系統 inode是什麼 inode內容 硬連結 軟連結 軟硬連結區別: 動態庫和靜態庫 如何生成自己的動態庫和靜態庫 如何連結一個庫生成可執行程式 檔案描述符的分配規則 最
QtEmbedded-4.8.6-arm 編譯選擇從 動態庫變化到靜態庫 時,生成的Makefile連結庫路徑下如果有動態庫和靜態庫,優先選擇動態庫編譯應用
問題:QtEmbedded-4.8.6-arm 編譯選擇從 動態庫到靜態庫 時,發現的一個疑惑:,生成的Makefile連結庫路徑下如果有動態庫和靜態庫,優先選擇動態庫編譯應用 具體現象: 我最初是使用動態庫的 QtEmbedded-4.8.6-arm (編譯器選擇時,是 ./co
GO語言生成C動態庫,再被連結成新動態庫
目錄 目標 測試程式碼 編譯步驟 GO ----> 動態庫 再封裝成新動態庫 編譯生成可執行檔案 嘗試GO---->C靜態庫---->C動態庫。 目標 如果想把GO語言實現的功能整合到C固定介面上,中間需要多加一次封裝。 因為很難用GO直
連結與執行時動態庫依賴
The -L option supplies a colon-separated library path that is to be searched at LINK TIME for libraries. Thus cc -o foo foo.c -L/usr/local/lib -lfoo
linux下封裝函式庫——動態庫.so和靜態庫.a(程式碼實現及連結方式)
在linux環境下的連結庫分為靜態連結庫(.a庫)和動態連結庫(.so庫),其作用是把C程式編譯好做成一種可執行連結檔案,主程式檔案呼叫這些程式的函式介面是可以使用a庫或so庫,在主程式中只需要include含有庫中提供的函式介面宣告的標頭檔案即可。所以學會如何
Ubuntu中使用cmake連結opencv庫的兩種方法(opencv3中 base+module動態庫的名字也在這裡寫好了)
第一種使用 find_package的方法 示例程式碼如下: # 宣告要求的 cmake 最低版本 cmake_minimum_required( VERSION 2.8 ) # 宣告一個 cmake 工程 project( pro ) # 設定編譯