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“,目錄也是自己定義的,如下
2.3 複制庫檔案到編譯目錄并運作程式
複制庫檔案到編譯目錄,運作,可以看到程式運作失敗了,如下
2.4 複制庫檔案到程式根目錄
如果把動态庫檔案複制到程式根目錄,那麼這裡及可以運作了
運作程式,如下圖
到這裡大緻問題應該就描述明白了,還有最後一個需要試一下,那就是Release以後的程式,是不是同樣需要把動态庫複制到程式更目錄
2.5 Release下測試
下圖是Release下的原始目錄,這裡我們還需要把我們的必要的Qt庫檔案搬過來,使用工具即可
執行如下指令,便可以吧Qt庫搬運到我們的目錄中,如下
嘗試運作一下程式,如下,預設Qt的搬運能力是沒法辦搬運我們自己庫的,需要自己手動搬運一下
把對應的GE庫和CAN總線庫搬運到程式目錄,這是我們理想的目錄結構如下圖,現在嘗試能否運作
運作結果如下,還是不可以,那麼在試試吧庫搬出來到與程式同級目錄
結果證明,Release下還是同樣,需要把庫檔案拷貝到統計目錄在可以,那麼别人的可以分類的檔案夾是怎麼做到的呢,我們來搞一下
3 實作動态庫檔案夾分類
3.1 需求
需求就是希望我們的庫檔案可以放在一個我們自定義的檔案家中,程式調用,不用将所有的庫檔案都放在程式的同級目錄。
3.2 實作
3.2.1 檢視項目運作配置
如下圖,通過檢視項目運作設定,我們已經把庫檔案目錄放到了程式的搜尋目錄了。但是為什麼還是不可以呢。這裡是看不錯出啥新奇玩意了,還是找百度吧。