“'affirmer’ n'a pas été déclarée dans ce champ d'application” dans MySQL++
Je suis la compilation d'un projet dans XCode où MySQL++ inclus et liés à. Pour une raison quelconque, je reçois l'erreur suivante compilateur:
'affirmer’ n'a pas été déclarée dans ce cadre
originaires de cpool.h, un fichier d'en-tête qui fait partie de MySQL++. Personne ne sait pourquoi c'est déclenché?
EDIT: Pour référence, MySQL++ a été installée via Macports.
Merci de poster le code d'erreur complet, il comprend souvent des numéros de ligne. Où en
Affirmer, c'est à défaut à la ligne 78, virtual ~ConnectionPool() { assert(empty()); } Et oui, l'affirmer.h est inclus.
Aussi, MySQL++ a été installée via Macports.
cpool.h
est l'ASSERTION qui est défaillant?Affirmer, c'est à défaut à la ligne 78, virtual ~ConnectionPool() { assert(empty()); } Et oui, l'affirmer.h est inclus.
Aussi, MySQL++ a été installée via Macports.
OriginalL'auteur Anonymous | 2010-05-25
Vous devez vous connecter pour publier un commentaire.
La réponse la plus évidente serait que "faire valoir.h" n'est pas compris ou n'est pas trouvé dans votre chemin. Une autre explication est que la macro assert a été indéfini à un certain point, après l'en-tête est inclus.
Edit: Puisque vous dites que le faire valoir.h est inclus, et nous allons supposer pour le moment que c'est d'être trouvé puisque c'est un en-tête standard, alors que nous laisse avec la dernière possibilité que j'ai dit précédemment, c'est à dire que la macro a été défini.
Depuis cpool.h lui-même ne sera pas en faisant cela, il doit être le cas que d'affirmer.h est inclus plus tôt par vous-même ou indirectement par une autre 3ème partie de l'en-tête et la la suppression passe entre le présent et de votre intégration de cpool.h. Ceci peut être facilement contrôlé par le déplacement de vos cpool.h inclure en haut de votre fichier.
Est le fichier qui contient mysql++.h un en-tête lui-même?
Oui, mais en le déplaçant la bonne .fichier cpp permet toujours la même erreur.
Donc, si vous créez un fichier source avec seulement la ligne
#include <mysql++.h>
dans il le fait de compiler?BTW, quand vous dites que vous obtenez la même erreur après le déplacement de l'en-tête en haut de votre fichier source est-il à venir à partir de ce particulier inclure ou est-il maintenant à venir à partir d'un autre indirects comprennent des cpool.h plus tard?
OriginalL'auteur Troubadour
Il se pourrait qu'un autre bibliothèque dans votre chemin est différent de "faire valoir.h" du fichier, et vous êtes sans le savoir, y compris à la place du système de standard <assert.h>.
Je suis tombé sur cette question lors de l'écriture d'une application qui utilise gstreamer sur Mac OSX. Il s'avère que gstreamer du répertoire (/Library/Frameworks/GStreamer.cadre/en-Têtes) comprend un fichier "affirmer.h", qui est non-standard, et inadapté de remplacement pour le real affirmer.h. Quand j'ai ajouté -I/Bibliothèque/Frameworks/GStreamer.cadres/en-Têtes, à ma compilation de commande, du coup mes sources, qui dit juste "#include <assert.h>" où, y compris la version de gstreamer. Cela a causé ma compilation échoue avec le même message d'erreur que vous aviez.
OriginalL'auteur Greg Prisament
En c++ ajoutant cassert d'en-tête devrait résoudre votre problème.
OriginalL'auteur MBI