我是C++編程中的新手。我從Qt 5.0.1開始。我需要使用來自:https://code.google.com/p/tufao/的WebSockets,但我沒有安裝MinGW,所以我搜索了一下,我可以創建Qt庫項目,包括這些源文件並構建靜態庫。所以我做到了:無法在Qt中添加外部軟件包
QT += network
QT -= gui
TARGET = tufao
TEMPLATE = lib
CONFIG += staticlib
INCLUDEPATH = src src/priv
SOURCES += \
src/websocket.cpp \
src/url.cpp \
src/simplesessionstore.cpp \
src/sessionstore.cpp \
src/querystring.cpp \
src/httpserverresponse.cpp \
src/httpserverrequestrouter.cpp \
src/httpserverrequest.cpp \
src/httpserver.cpp \
src/httppluginserver.cpp \
src/httpfileserver.cpp \
src/headers.cpp \
src/abstractmessagesocket.cpp \
src/abstracthttpserverrequesthandler.cpp \
src/priv/tcpserverwrapper.cpp \
src/priv/rfc1123.cpp \
src/priv/rfc1036.cpp \
src/priv/reasonphrase.cpp \
src/priv/http_parser.c \
src/priv/asctime.cpp
HEADERS += \
src/websocket.h \
src/url.h \
src/tufao_global.h \
src/simplesessionstore.h \
src/sessionstore.h \
src/sessionsettings.h \
src/session.h \
src/querystring.h \
src/ibytearray.h \
src/httpsserver.h \
src/httpserverresponse.h \
src/httpserverrequestrouter.h \
src/httpserverrequest.h \
src/httppluginserver.h \
src/httpfileserver.h \
src/headers.h \
src/abstractmessagesocket.h \
src/abstracthttpserverrequesthandlerfactory.h \
src/abstracthttpserverrequesthandler.h \
src/priv/websocket.h \
src/priv/url.h \
src/priv/tcpserverwrapper.h \
src/priv/simplesessionstore.h \
src/priv/sessionstore.h \
src/priv/rfc1123.h \
src/priv/rfc1036.h \
src/priv/reasonphrase.h \
src/priv/httpsserver.h \
src/priv/httpserverresponse.h \
src/priv/httpserverrequestrouter.h \
src/priv/httpserverrequest.h \
src/priv/httpserver.h \
src/priv/httppluginserver.h \
src/priv/httpfileserver.h \
src/priv/http_parser.h \
src/priv/cryptography.h \
src/priv/asctime.h
unix:!symbian {
maemo5 {
target.path = /opt/usr/lib
} else {
target.path = /usr/lib
}
INSTALLS += target
}
生成後,我得到libtufao.a
。所以下一步就是測試它。我創建了簡單的測試項目,並通過單擊添加庫 - >外部 - >靜態來添加此庫。所以我改變libtufao.a
到libtufao.lib
打開對話框只能打開.lib
文件:
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = sockettest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h \
FORMS += mainwindow.ui
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../components/tufao-build-Desktop_Qt_5_0_1_MinGW_32bit-Release/release/ -llibtufao
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../components/tufao-build-Desktop_Qt_5_0_1_MinGW_32bit-Release/debug/ -llibtufao
INCLUDEPATH += $$PWD/../../components/tufao/src
DEPENDPATH += $$PWD/../../components/tufao/src
win32:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../components/tufao-build-Desktop_Qt_5_0_1_MinGW_32bit-Release/release/libtufao.lib
else:win32:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../components/tufao-build-Desktop_Qt_5_0_1_MinGW_32bit-Release/debug/libtufao.lib
但是當我嘗試建立這個測試項目中,我得到編譯器錯誤:
undefined reference to `imp__ZN5Tufao9WebSocket13connectToHostERK12QHostAddresstRK10QByteArrayRKNS_7HeadersE' collect2.exe:-1:
error: ld returned 1 exit status
誰能幫助我?
問候
編輯: 問題通過添加各種渠道進入我的DEST項目,並在.pro
文件我加了DEFINES += TUFAO_LIBRARY
解決。現在一切正在編譯好。
請回答您的問題並將其標記爲正確答案。 – troyane 2013-03-06 10:16:05