在MSVC中配置Qt项目设置

时间:2016-10-18 13:18:03

标签: c++ qt visual-studio-2013

我试图将一些网络功能添加到现有的Qt应用程序中,为此我有一个有效的MSVC项目文件。我的出发点是Qt安装提供的'fortune server'网络示例。我在Qt Creator中编译是没有问题的,但是在MSVC中它失败了。要获得一个有效的MSVC项目,我必须使用Qt插件并导入Qt Creator .pro文件。这也有效,但我遇到的问题是我需要修改现有的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>

因为它无法找到文件/目录。

我可以通过添加大量的include语句(示例中修改后的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)" (__imp_?qt_assert@@YAXPBD0H@Z) referenced in function "public: class QObjectData * __thiscall QScopedPointer<class QObjectData,struct QScopedPointerDeleter<class QObjectData> >::operator->(void)const " (??C?$QScopedPointer@VQObjectData@@U?$QScopedPointerDeleter@VQObjectData@@@@@@QBEPAVQObjectData@@XZ)  c:\Users\xxx\documents\visual studio 2013\Projects\servertest\servertest\moc_server.obj 

因为我知道代码应该有效,所以我觉得我应该有一些微不足道的东西。

由于

1 个答案:

答案 0 :(得分:0)

听起来您没有设置正确的包含目录,库目录和库引用。 MSVC版本之间略有不同,但您应该能够通过在“解决方案资源管理器”窗口中右键单击项目名称和所选属性来跟踪它们。下一部分有点令人困惑,因为有多个地方可以设置以下信息,我将尝试解释这两个部分。

在MSVS 2015中,配置属性中有一个VC ++目录部分。我相信这是您为整个解决方案设置路径的地方。

  • 设置包含目录以包含Qt的包含路径。
  • 设置库目录以包含Qt的库文件路径。

也可以从解决方案资源管理器中按项目设置。

  • C / C ++ - &gt; 一般 - &gt; 其他包含目录
  • Linker 下 - &gt; 一般 - &gt; 其他图书馆目录

还需要包含相应的lib文件。

  • Linker 下 - &gt; 输入 - &gt; 其他相关性

OR

  • 将以下代码添加到相应的cpp文件中:

    #pragma comment (lib, "libfile.lib") 
    

我建议您使用include和库路径的每个项目设置。