本項目除了源碼主要涉及的依賴庫有openLIB和osgLIB
osgLIB動態庫主要包含三部分:第三方依賴、osg庫和osg數據,主要使用build文件
bin文件內是存放動態庫(.dll)、二進制文件或可執行程序(.exe),
include文件存放庫的頭文件(.h)
lib文件存放動態庫的導入庫文件(.lib)
動態庫的使用與靜態庫不同,靜態庫只需要2個文件:頭文件(.h)、庫文件(.lib),
而動態庫需要三個文件: 頭文件(.h)、導入庫(.lib)、動態庫(.dll), 每當我們使用動態庫里的函數時執行的流程為先在頭文件找到聲明再去導入庫中定位函數主體位置,拿到地址再在動態庫中找到函數。
因此在Qt配置編譯環境時,主要是.pro文件中添加所依賴的庫地址,因為Qt添加外部庫只需要兩個地址,1是庫地址,2是頭文件地址,所以我們需要提前將我們需要的動態庫文件和導入庫文件放在一個文件夾中。
項目中需要的動態庫主要就以下8個:
同時Qt的.pro文件需要加上以下代碼,功能是編譯時鏈接所需要的動態庫,注意庫地址頭文件地址必須書寫正確,$$PWD
指的是.pro所在的文件 ../
指上一級目錄
libpath = $$PWD/../osgLIB/build/lib/
win32: LIBS += -L$$libpath -lOpenThreadsd \
-L$$libpath -losgd \
-L$$libpath -losgDBd \
-L$$libpath -losgGAd \
-L$$libpath -losgQt5d \
-L$$libpath -losgTextd \
-L$$libpath -losgUtild \
-L$$libpath -losgViewerd \
INCLUDEPATH += $$PWD/../osgLIB/build/include
DEPENDPATH += $$PWD/../osgLIB/build/include
INCLUDEPATH += $$PWD/../openLIB
INCLUDEPATH += $$PWD/../openLIB/Eigen/src/LU
出現問題
- 以上編譯環境的配置完成后, 使用Qt編譯通過,但運行程序崩潰,一般原因是還是缺少某個動態庫, 可以找到工程目錄雙擊exe文件,會提示缺少的動態庫, 我這里缺少的是zlibd.dll文件,在3rdPatry文件夾中有, 找到并添加到osgLIB的bin目錄中
- 如果只是配置好了Qt的編譯環境,這時候雙擊exe文件依然會提示缺少那8個需要的動態庫,原因是exe文件運行時需要到系統環境變量中去找動態庫,所以還需要配置系統環境變量,找到osgLIB中的bin文件,將他添加到環境變量中
附錄
osg庫已經配置好了,直接下載放到工程目錄中,將上述代碼添加到.pro文件中即可,如果不行檢查庫地址libpath對不對
osgLIB和openLIB百度云下載 提取碼:bwy5