【发布时间】:2017-11-16 08:28:24
【问题描述】:
我正在尝试在 VS 上构建一个 C++ 项目。该项目是在 Linux 机器上使用 NetBeans 开发的,现在我在 Windows 上使用 Visual Studio 2017。
它不是使用 Qt Creatos 开发的,因此这些库是手动添加的,带有如下语句:
#include <QtCore>
#include <QCoreApplication>
#include <QObject>
#include <QStringList>
#include <QMap>
...
这是我到目前为止所做的:
- 下载了最新的 Qt 版本
- 解压 C:\Qt 中的所有内容
- 在 VS 属性 > VC++ 目录 > 包含目录 - 我添加了 C:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include 和 C:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore
- 在 VS 属性 > VC++ 目录 > 库目录中 - 我添加了 C:\Qt\Qt5.9.2\5.9.2\msvc2017_64\lib
但是,当我尝试#include <QtCore> 时,VS 似乎期望更多:
https://imgur.com/a/ruSbi
但它不能编译。
Severity Code Description Project File Line Suppression State
Error (active) E0020 identifier "QEvent" is undefined c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qabstractanimation.h 121
Error (active) E0020 identifier "QEvent" is undefined c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qabstractstate.h 73
Error (active) E0020 identifier "QEvent" is undefined c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qabstractstate.h 74
Error (active) E0020 identifier "QEvent" is undefined c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qabstractstate.h 76
Error (active) E1455 member function declared with 'override' does not override a base class member c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qabstracttransition.h 105
Error (active) E1455 member function declared with 'override' does not override a base class member c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qanimationgroup.h 70
Error (active) E1455 member function declared with 'override' does not override a base class member c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qcoreapplication.h 190
Error (active) E0020 identifier "qint8" is undefined c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qdatastream.h 147
Error (active) E0020 identifier "qint8" is undefined c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qdatastream.h 163
Error (active) E0260 explicit type is missing ('int' assumed) c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qendian.h 236
Error (active) E0801 "qint8" is not a class or function template name in the current scope c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qendian.h 236
Error (active) E0065 expected a ';' c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qendian.h 236
Error (active) E0020 identifier "qint8" is undefined c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qendian.h 236
Error (active) E0020 identifier "QEvent" is undefined c:\Qt\Qt5.9.2\5.9.2\msvc2017_64\include\QtCore\qeventloop.h 79
Error (active) E1455 member function declared with 'override' does not override a base class member
...
所以,我想我错过了一些东西。我是 VS 的新手,所以我将不胜感激。
谢谢
【问题讨论】:
-
无法编译。 - 显示编译器消息
-
只需使用在线/离线安装程序,而不是手动解包/构建 Qt。并在 Visual Studio 2017 中使用 Qt 插件
-
@scopchanov 是的,抱歉,已编辑。
-
@DmitrySazonov 是的,我是这样做的,但是安装程序只是将所有组件解压缩到给定文件夹中,不是吗?我使用了离线安装程序:qt-opensource-windows-x86-5.9.2.exe
-
@enekow 不,它还修补 Qt5Core.dll 并做一些其他的事情。再说一遍:你安装 Qt 插件了吗?
标签: c++ visual-studio qt visual-studio-2017