我正在嘗試向現有的Qt應用程序添加一些網絡功能,爲此我有一個工作的MSVC項目文件。我的出發點是Qt安裝提供的'fortune server'網絡示例。我沒有問題在Qt Creator中編譯,但在MSVC中失敗。爲了得到一個有效的MSVC項目,我不得不使用Qt插件並導入Qt Creator .pro文件。這也適用,但我的問題是,我需要修改我現有的Qt項目,以使「財富服務器」示例在其中編譯。在詳細瞭解所有項目設置後,我無法找到工作和非工作項目之間的相關區別。在MSVC中配置Qt項目設置
我想缺少的設置必須是什麼在.pro文件表示的等效,這是沒有太大的:
QT += network widgets
HEADERS = server.h
SOURCES = server.cpp \
main.cpp
# install
target.path = $$[QT_INSTALL_EXAMPLES]/network/fortuneserver
INSTALLS += target
編譯器錯誤,我得到的是基本包含語句失敗,如:
#include <QtWidgets>
因爲找不到文件/目錄。
我可以解決這個問題通過增加一噸的包括語句(從示例修改server.cpp):
#include <QtWidgets/QWidget>
#include <QtNetwork/QtNetwork>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QHBoxLayout>
#include <QtGui/QGuiApplication>
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QNetworkSession>
#include <QtGui/QStyleHints>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QMessageBox>
(與工作項目,我並不需要所有類的所有那些明確的夾雜物)
但是,它仍然不能編譯,我得到很多的錯誤線沿線的:
Error 2 error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl qt_assert(char const *,char const *,int)" ([email protected]@[email protected]) referenced in function "public: class QObjectData * __thiscall QScopedPointer<class QObjectData,struct QScopedPointerDeleter<class QObjectData> >::operator->(void)const " ([email protected]@@[email protected]@@@@@@[email protected]@XZ) c:\Users\xxx\documents\visual studio 2013\Projects\servertest\servertest\moc_server.obj
因爲我知道這些代碼應該工作,我覺得有ough噸是我微不足道的小事。
感謝
您需要將必要的Qt模塊添加到您的項目中。你可以通過Qt插件的項目設置來做到這一點。 –
你使用哪個版本的qt插件?有一個新的VS2015可以正常工作,但被標記爲beta版本。基本上,你應該配置插件,以便在項目中使用所需的qt版本,然後插件將負責添加包含目錄和庫文件。 –