各位大佬,請幫幫忙。我在呼叫動態庫的時候,它總是報錯::-1: error: LNK1104: 無法打開檔案“xxx.lib”。我呼叫動態庫的步驟是如下:
1.在工程目錄下創建了一個dll檔案,用來存放庫檔案:主要有xxx.dll庫、xxx.lib庫
2.指定動態庫的路徑:
LIBS += -L$$PWD/dll/ -lxxx
3.通過QtCreator選擇外部庫進行指定庫路徑,代碼如下:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/dll/ -lxxx
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/dll/ -lxxx
INCLUDEPATH += $$PWD/dll
DEPENDPATH += $$PWD/dll
4.把相應的頭檔案放在工程目錄下。
5.編譯運行
以上,請問哪里錯了嗎?還有就是動態庫.dll和靜態庫.lib是不是一定要庫名字一樣呢?
uj5u.com熱心網友回復:
else:win32:CONFIG(debug, debug|release):建議把這些判斷都去了,先試試看。我發現pro的判斷很反常,而后試試大括號。
uj5u.com熱心網友回復:
這個是用qtcreator添加外部庫直接生成的,你是說else:win32:CONFIG(debug, debug|release):去掉,只留下LIBS += -L$$PWD/dll/ -lxxx??這樣好像行不通吧。
uj5u.com熱心網友回復:
你要是debug和release的內容寫的一樣,那本來就跟只寫一條效果一樣啊
而且如果是自動這樣生成的,肯定是沒有去掉“為debug版本添加'd'作為后綴”
所以你應該看一下是不是在debug那邊,是-lxxxd而不是-lxxx,所以它會去找xxxd.lib
uj5u.com熱心網友回復:
看看XXX.lib是否損壞。你可以打開Visual Studio,自己建立一個簡單的專案,然后測驗一下是否也可行。uj5u.com熱心網友回復:
lib不一定就是靜態庫庫,大多數情況下只是dll的衍生品,也就是dll的export串列描述檔案。一般我們把lib檔案放在lib目錄下的話,dll會放入bin目錄。然后在pro檔案中只去找lib目錄。uj5u.com熱心網友回復:
根據我的經驗 你的 “-lxxx" 實際上 Qt聯結器 找的是 libxxx.lib 而直接鏈接 xxx.lib 的 不是用 "-lxxx"轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/10764.html
標籤:Qt
上一篇:求助安卓開發中,前端的學習方向
下一篇:請教一個模擬器運行的問題
