2010-08-25 8 views
4

Je suis en train de construire un projet sur Mac OSX, et il me donne une erreur cryptique:Qt moc error 1 - qu'est-ce que cela signifie?

[moc_droparea.cpp] Error 1

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

+0

Cela vous dérangerait de poster le fichier droparea.h qui donne l'erreur quand vous êtes mocé? – Fred

+0

Je ne peux malheureusement pas publier de code source, malheureusement, le projet est pour le travail. Cependant, le fichier .h est presque identique à celui qui se trouve dans l'exemple Drop Area fourni avec QT creator. – CoutPotato

+0

Remarque supplémentaire: cette erreur peut également se produire lorsque vous essayez d'utiliser Q_OBJECT avec la classe de modèle. Comment utiliser la fonctionnalité de signal/slot dans la classe de modèle décrite dans: http://stackoverflow.com/questions/4397478/qt-templated-q-object-class –

Répondre

4

La solution était agilement simple. J'avais une structure de dossier qui mettait des espaces (caractères illégaux) dans le chemin du fichier. J'ai mis des underscores à la place des espaces et ça s'est bien construit. Je pense 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.

+0

J'ai eu ce problème avant. Pouvez-vous accepter votre propre réponse? Cela l'enlèvera de la liste sans réponse. –

0

Cela peut être dû à beaucoup de choses je suppose - j'ai eu 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.

1

Cliquez sur "compiler la sortie", faites défiler vers le haut et cliquez sur la ligne rouge.

Dans mon cas, la ligne rouge disait: Vous ne pouvez pas définir une valeur entière dans les emplacements privés..

Sous la fenêtre du créateur qt, dans la section "détails de la progression", il y a un bouton nommé "sortie de compilation" (bouton numéro 4). Les erreurs y sont expliquées avec une police rouge. Cliquez dessus et faites défiler vers le haut.

0

La même erreur 1 est survenue à cause d'un fichier de ressources (.qrc) qui faisait référence à un nom de fichier commençant par un point. Lorsque j'ai supprimé la période du nom de fichier, la compilation a de nouveau fonctionné. Fait intéressant, l'erreur est survenue uniquement sous Mac OSX en utilisant le compilateur Clang. Sur Windows utilisant le compilateur gcc, le nom du fichier n'a pas provoqué d'erreur. Il se peut que le message "[source file name] Error 1" signifie qu'un fichier n'a pas pu être trouvé en raison de caractères inattendus dans le chemin d'accès du fichier.

+0

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

+0

Droit. Mais je n'avais pas le droit de commenter (score trop bas). Mais, encore une fois, * ceci * est un commentaire. Je me félicite de ma mise à niveau. –