Qt 5构建错误:测试表达后的额外字符

时间:2014-07-27 12:41:07

标签: c++ qt qt5

我正在努力学习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完全不熟悉,所以请给出一个简单的解释。

4 个答案:

答案 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中发现并讨论。