天天看點

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

1 背景

最近項目開發需要調用多個外部的動态庫,以前一般也就是調用一兩個,無所謂,現在需要調用很多個,就想給多個動态庫分分類,已友善以後項目的疊代 ,嘗試了才發現,隻能在同級目錄才能調用。是以,決定研究研究。

2 使用場景描述

2.1 添加動态庫

我習慣使用相對路徑來調用動态庫,如下

INCLUDEPATH += $$PWD/CANCore/X64
DEPENDPATH += $$PWD/CANCore/X64



unix|win32: LIBS += -L$$PWD/GECore/Lib/ -lrfm2gdll_stdc_64

INCLUDEPATH += $$PWD/GECore/Inc
DEPENDPATH += $$PWD/GECore/Inc

      

2.2 更改編譯目錄

我編譯的時候,使用的Qt自帶的“Shadow build“,目錄也是自己定義的,如下

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

2.3 複制庫檔案到編譯目錄并運作程式

複制庫檔案到編譯目錄,運作,可以看到程式運作失敗了,如下

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

2.4 複制庫檔案到程式根目錄

如果把動态庫檔案複制到程式根目錄,那麼這裡及可以運作了

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

運作程式,如下圖

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

到這裡大緻問題應該就描述明白了,還有最後一個需要試一下,那就是Release以後的程式,是不是同樣需要把動态庫複制到程式更目錄

2.5 Release下測試

下圖是Release下的原始目錄,這裡我們還需要把我們的必要的Qt庫檔案搬過來,使用工具即可

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

執行如下指令,便可以吧Qt庫搬運到我們的目錄中,如下

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

嘗試運作一下程式,如下,預設Qt的搬運能力是沒法辦搬運我們自己庫的,需要自己手動搬運一下

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

把對應的GE庫和CAN總線庫搬運到程式目錄,這是我們理想的目錄結構如下圖,現在嘗試能否運作

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

運作結果如下,還是不可以,那麼在試試吧庫搬出來到與程式同級目錄

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

結果證明,Release下還是同樣,需要把庫檔案拷貝到統計目錄在可以,那麼别人的可以分類的檔案夾是怎麼做到的呢,我們來搞一下

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

3 實作動态庫檔案夾分類

3.1 需求

需求就是希望我們的庫檔案可以放在一個我們自定義的檔案家中,程式調用,不用将所有的庫檔案都放在程式的同級目錄。

3.2 實作

3.2.1 檢視項目運作配置

如下圖,通過檢視項目運作設定,我們已經把庫檔案目錄放到了程式的搜尋目錄了。但是為什麼還是不可以呢。這裡是看不錯出啥新奇玩意了,還是找百度吧。

Qt 解決程式動态庫必須和可執行檔案放同一檔案夾
Qt 解決程式動态庫必須和可執行檔案放同一檔案夾
Qt 解決程式動态庫必須和可執行檔案放同一檔案夾

繼續閱讀