web-dev-qa-db-fra.com

Erreur de construction Qt 5: caractères supplémentaires après l'expression du test

J'essaie d'apprendre Qt 5.3 et c'est mon premier programme (hello world). Lorsque j'essaie de construire, il affiche cette erreur:

caractères supplémentaires après l'expression du test.

Je ne comprends pas du tout pourquoi cette erreur se produit. Je viens de prendre un simple code sur Internet pour vérifier si j'ai correctement installé Qt. Voici le code:

#include <QApplication>
#include <QPushButton>
int main(int argc, char **argv)
{
    QApplication app (argc, argv);
    QPushButton button ("Hello world !");
    button.show();
    return app.exec();
}

L'erreur est affichée aux lignes 3, 5, 6, 8. Je suis complètement nouveau dans Qt, donnez-moi une explication simple.

14
Sham

Vérifiez le fichier .pro. Parfois, c'est parce que vous n'avez pas de barre oblique à la fin d'une des lignes qui ne dure pas:

HEADERS += Qt/mainwindow.h \
    Qt/MPrintableWidget.h \
    Qt/MPrintableWidgetGroup.h    # Oooops forgot the \ here
    Qt/MFixedSizeDialog.h \
    Qt/MScreenPage.h

Toutes les lignes sauf la dernière doivent se terminer par une barre oblique inverse.

36
mjk99

Je viens de rencontrer la même erreur. Il est dans le fichier .pro. Vous pouvez ouvrir et vérifier attentivement. - Vous avez oublié de mettre une barre oblique noire à la fin d'une ligne. .____.] - Vous mettez un autre caractère après blackslash (dans la même ligne).

1
Doan Quang Viet

Ce code est compilé, lié et fonctionne très bien ici, donc la seule chose à laquelle je peux penser est un problème avec les fichiers include sur votre machine.

Tout d’abord, assurez-vous que vous utilisez Qt5 et que vous avez les fichiers d’inclusion Qt5. 

Deuxièmement, vous pouvez essayer de le compiler à partir de la ligne de commande. Voici ce que je viens d'utiliser sur ma machine Linux avec Qt5 et g ++:

g++ -fPIC -I /usr/include/qt5/QtWidgets -I /usr/include/qt5 qttest.cpp -o qttest -lQt5Core -lQt5Widgets

Vous n'avez pas précisé le système d'exploitation que vous utilisez ou comment vous construisez. Quoi que vous utilisiez, vous devrez vérifier que les fichiers appropriés sont utilisés.

1
Edward

Je rencontrais ce message d'erreur sous Windows. Les nouveaux projets créés par Qt Creator n'ont pas pu analyser le .pro ou le build. Le problème principal est une clé de registre que j'ai ajoutée pour modifier la page de codes pour toutes les instances cmd.exe, afin de mieux prendre en charge la sortie Unicode.

La clé de registre a été nommée Autorun avec la valeur de chaîne chcp 65001. (Il existe différents endroits dans le registre où cette clé peut vivre; utilisez la fonction de recherche de Regedit pour voir si vous en avez une. La mienne est enterrée dans un chemin impliquant un GUID pour mon utilisateur spécifique .) Les symptômes que je rencontrais étaient des messages d'erreur comme celui-ci sur de tout nouveaux projets:

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.

Le problème, je suppose, est que Qt Creator utilise cmd.exe sous Windows pour exécuter le code et analyse le texte produit à partir de celui-ci. Qt Creator doit avoir un analyseur de texte fragile de la sortie qui échoue lorsque Autorun crée une sortie supplémentaire dans le processeur de commandes au démarrage. (Peut-être commence-t-il sur un numéro de ligne spécifique en ignorant le spam de démarrage de cmd.exe?)

Le solution pour moi était de changer la commande Autorun de chcp 65001 à @chcp 65001>nul, ce qui l’empêche d’envoyer du spam Active code page: 65001 dans le résultat.

_ {J'ai trouvé ce problème découvert et discuté dans ce fil de discussion Qt Forum .

0
Phrogz