11
votes

QT MOC Erreur 1 - Qu'est-ce que cela signifie?

J'essaie de construire un projet sur Mac OSX, et cela me donne une erreur cryptique:

[moc_droparea.cpp] Erreur 1

droparea.cpp est (évidemment) un fichier dans le projet. J'ai vérifié qu'il existe dans le répertoire de projet et n'est pas corrompu. Le fichier moc_droparea.cpp ne figure pas dans le dossier de construction après cette erreur, alors je suppose que cela ne construge pas pour une raison quelconque, mais l'erreur est trop vague pour m'aider à comprendre ce qui est continuer. Quelqu'un pourrait-il m'aider à comprendre ce que cela signifie s'il vous plaît?


3 commentaires

Voulez-vous vous déranger de poster le fichier Droparea.h qui donne l'erreur lorsqu'elle est MOC'ed?


Je ne peux pas réellement poster aucun du code source malheureusement, le projet est pour le travail. Cependant, le fichier .h est presque identique à celui que l'on trouve dans l'exemple de zone d'abandon fourni avec le créateur QT.


Remarque supplémentaire: cette erreur peut également se produire lorsque vous essayez d'utiliser q_Object avec une classe de modèle. Comment utiliser la fonctionnalité des signaux / emplacement dans la classe de modèle décrite dans:

8 Réponses :


8
votes

La solution était ennuyeuse simple. J'ai eu une structure de dossiers qui mettent des espaces (caractères illégaux) dans le chemin de fichier. Je mets des traits de soulignement au lieu des espaces et ça a bien construit. Je penserais que le pré-processeur MOC pourrait gérer des espaces dans les noms de fichiers, mais apparemment pas. Je me sens stupide, mais au moins le problème est résolu maintenant.

Espérons que cette solution peut aider quelqu'un d'autre.


1 commentaires

J'ai déjà eu ce problème. Pouvez-vous accepter votre propre réponse? Cela le supprimera de la liste sans réponse.



1
votes

Cela peut être à cause de nombreuses choses que je suppose - j'avais une situation similaire où j'ai oublié de supprimer une entrée dans le fichier .QRC qui n'existait plus.

Vérifiez également vos chemins de ressources.


0 commentaires

8
votes

Cliquez sur "Compiler la sortie", faites défiler et cliquez sur la ligne rouge.

Dans mon cas, la ligne rouge disait: vous ne pouvez pas définir une valeur entière dans des machines à sous privées. .

Sous la fenêtre Créateur QT, dans la section "Détails de progrès", il y a un bouton nommé "Compiler la sortie" (bouton numéro 4). Les erreurs y sont expliquées avec une police rouge. Cliquez dessus et faites défiler jusqu'à.


0 commentaires

0
votes

Même erreur 1 s'est produite pour moi en raison d'un fichier de ressource (.qrc) qui a été renvoyé à un nom de fichier commençant par une période. Lorsque j'ai supprimé la période du nom du fichier, la compilation a de nouveau fonctionné. Fait intéressant, l'erreur s'est produite uniquement sous Mac OSX à l'aide du compilateur de clang. Sous Windows à l'aide du compilateur GCC, le nom du fichier n'a pas provoqué une erreur.

Peut-être le message "[Nom du fichier source] 1" Message d'erreur en général signifie qu'un fichier n'a pas pu être trouvé en raison de caractères inattendus dans le chemin de fichier.


2 commentaires

Je pense que cela aurait dû être un commentaire et non une réponse


Droit. Mais je n'ai pas été autorisé à commenter (trop bas un score). Mais encore une fois, Ce est un commentaire. Je me félicite de ma mise à niveau.



1
votes

Vous pouvez cliquer avec le bouton droit de la souris sur l'erreur 1 et sélectionnez "Afficher la sortie". Dans mon cas, j'ai eu un mauvais nom de fichier dans mon fichier QRC.


0 commentaires

5
votes

Cela peut être dû à peu d'autres choses que d'autres l'ont mentionné. Je voudrais ajouter un autre qui manque ici.

Vous obtiendrez une «erreur MOC 1» au cas où vous créez une classe et ajouterez Q_Object à celui-ci, mais n'héritez pas de QOBJECT.

Si vous regardez une sortie de compilation, une ligne indique:

Erreur: la classe contient q_Object macro mais n'hérite pas de qObject

Par conséquent, l'approche générale pour résoudre ce problème est simplement de regarder la fenêtre "Compiler la sortie".


0 commentaires

-1
votes

Dans mon cas, j'ai manqué d'espace sur la carte SD, ce qui a entraîné ce type d'erreur.


0 commentaires

1
votes

Comme J.javan a déjà signalé, il peut être utile de vérifier également la sortie du compilateur. Dans mon cas, j'ai trouvé:

../ statemaschine / usermenu.h: 57: Erreur: Déclarations de classe manque Q_Object macro. Faire: *** [Makefile: 215: MOC_USERMENU.CPP] Erreur 1 P> blockQuote>

Cela m'a donc aidé à corriger l'erreur par correction de la déclaration de classe lors de l'utilisation de signaux et de machines à sous: P>

class Menu : public QObject{
    Q_OBJECT
    ...


0 commentaires