[英]How to link a dynamic library in QtCreator use qmake and MinGW32?
我試圖在我的項目中使用hiredis和libevent,我下載了他們的源代碼並用CmakeGUI和MinGW32編譯它們。 然后我得到了頭文件和那些庫文件。
然后我寫了一些測試程序來使用這些庫,但是無法成功鏈接錯誤是這樣的:
error: undefined reference to `redisConnect'
這是我的專業文件和代碼。
#my pro file
#hiredis
INCLUDEPATH += $$PWD/include/hiredis
LIBS += -L$$PWD/lib/ -llibhiredis.dll
#event2
INCLUDEPATH += $$PWD/include/libevent
LIBS += -L$$PWD/lib/ -llibevent.dll
LIBS += -L$$PWD/lib/ -llibevent_core.dll
LIBS += -L$$PWD/lib/ -llibevent_extra.dll
#include "hiredis.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow) {
ui->setupUi(this);
redisContext *asd = redisConnect("127.0.0.1", 6379);
}
這是編譯輸出
g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o release\Test.exe release/main.o
release/mainwindow.o release/moc_mainwindow.o
-LC:\Users\VC\Desktop\Test\lib C:\Users\VC\Desktop\Test\lib\libhiredis.dll.a
C:\Users\VC\Desktop\Test\lib\libevent.dll.a
C:\Users\VC\Desktop\Test\lib\libevent_core.dll.a
C:\Users\VC\Desktop\Test\lib\libevent_extra.dll.a
D:\Work\env\cpp\Qt\5.12.9\mingw73_32\lib\libQt5Widgets.a
D:\Work\env\cpp\Qt\5.12.9\mingw73_32\lib\libQt5Gui.a
D:\Work\env\cpp\Qt\5.12.9\mingw73_32\lib\libQt5Core.a
-lmingw32 D:\Work\env\cpp\Qt\5.12.9\mingw73_32\lib\libqtmain.a
-LC:\openssl\lib -LC:\Utils\my_sql\mysql-5.6.11-win32\lib
-LC:\Utils\postgresql\pgsql\lib -lshell32
release/mainwindow.o:mainwindow.cpp:(.text+0x2c9): undefined reference to `redisConnect'
我嘗試了兩個不同的庫(libevent 和hiredis)並得到了相似的結果,我做錯了什么?
謝謝你
嘗試刪除 .dll,只需給出 lib 的名稱,我的意思是包含這樣的 lib:
INCLUDEPATH += $$PWD/include/hiredis
INCLUDEPATH += -L$$PWD/lib
LIBS += -L$$PWD/lib/ -llibhiredis
然后清理項目並運行qmake。
我曾經在環境變量中設置了64位版本的MinGW,但是忘記了當我改成32位MinGW路徑時,編譯成功,可以使用動態庫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.