我正在努力学习Qt 5.3,这是我的第一个程序(hello world)。当我尝试构建时,它会显示以下错误:
测试表达后的额外字符。
我根本无法理解为什么会出现这个错误。我刚从互联网上拿了一些简单的代码来检查我是否正确安装了Qt。 这是代码:
#include <QApplication>
#include <QPushButton>
int main(int argc, char **argv)
{
QApplication app (argc, argv);
QPushButton button ("Hello world !");
button.show();
return app.exec();
}
错误显示在第3,5,6,8行。 我对Qt完全不熟悉,所以请给出一个简单的解释。
答案 0 :(得分:38)
检查.pro文件。有时这是因为你没有最后一行的末尾有黑色标记:
HEADERS += Qt/mainwindow.h \
Qt/MPrintableWidget.h \
Qt/MPrintableWidgetGroup.h # Oooops forgot the \ here
Qt/MFixedSizeDialog.h \
Qt/MScreenPage.h
除了底部之外的每一行都需要以反斜杠结束。
答案 1 :(得分:1)
这段代码编译和链接并在这里运行得很好,所以我唯一能想到的就是机器上包含文件的问题。
首先,请确保您使用的是Qt5并且您已获得Qt5包含文件。
其次,您可以尝试从命令行进行编译。以下是我在Linux机器上使用Qt5和g ++时所使用的内容:
g++ -fPIC -I /usr/include/qt5/QtWidgets -I /usr/include/qt5 qttest.cpp -o qttest -lQt5Core -lQt5Widgets
您还没有说明您正在使用哪种操作系统,或者您是如何构建的。无论您使用什么,您都需要验证它是否真正使用了正确的文件。
答案 2 :(得分:1)
我刚遇到同样的错误。 它位于.pro文件中。 您可以仔细打开并检查。 - 你忘了在行尾添加黑色长片。 - 你在黑色斜线后面放了另一个字符(在同一行)。
答案 3 :(得分:1)
我在Windows上遇到此错误消息。由Qt Creator创建的全新项目无法解析.pro
或进行构建。核心问题是我添加的注册表项,用于更改所有cmd.exe
实例的代码页,以便更好地支持Unicode输出。
该注册表项的名称为Autorun
,其字符串值为chcp 65001
。 (注册表中有很多地方可以使用该密钥;请使用Regedit的搜索功能来查看您是否具有这样的密钥。我的矿山恰好埋在特定用户涉及GUID的路径中。)在全新项目中出现了这样的错误消息:
C:/Qt/5.11/msvc2017_64/mkspecs/features/toolchain.prf(208): Extra characters after test expression.
Project ERROR: Compiler produced empty value for Active.
C:/Qt/5.11/msvc2017_64/mkspecs/features/toolchain.prf(208): Extra characters after test expression.
Error while parsing file C:\Users\phrogz\Documents\FooBar\FooBar.pro. Giving up.
我推测问题是Qt Creator在Windows上使用cmd.exe
来运行代码,并解析由此输出的文本。 Qt Creator必须具有输出的易碎文本解析器,当自动运行在启动时将额外的输出放入命令处理器时,该文本解析器将失败。 (也许是从特定的行号开始,而跳过了cmd.exe启动垃圾邮件?)
对我来说,解决方案是将“自动运行”命令从chcp 65001
更改为@chcp 65001>nul
,以防止将“ Active code page: 65001
”发送到输出中。
我发现这个问题已在this Qt Forum thread中发现并讨论。