IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Erreur compilation conflit déclaration


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Par défaut Erreur compilation conflit déclaration
    Bonjour à tous,

    J'ai un petit problème de compilation sur une re définition de structure. Je suis actuellement entrain de faire un petit programme qui utilise tesseract, jusque là pas de problème, j'ai maintenant besoin d’utiliser l'API MySQL, et là lorsque j'inclus mysql.h ainsi que baseapi.h pour tesseract au moment de la compilation j’obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    In file included from /usr/include/mysql/mysql.h:75:0, from ocr.cpp:4:
            /usr/include/mysql/my_list.h:26:3: error: conflicting declaration ‘typedef struct st_list LIST’
    In file included from ocr.cpp:2:0:
             /usr/include/tesseract/baseapi.h:58:19: error: ‘LIST’ has a previous declaration as ‘typedef struct list_rec* LIST’
    Le problème est donc que dans mes 2 fichier h dispose d'une structure semblable, alors ma question est, comment résoudre ce problème est-il possible de faire une namespace dans mon main pour une des 2 structure ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Salut,

    pas de chance pour toi
    En général un workaround est de mettre ton include dans un namespace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    namespace MYSQL {
    #include <mysql.h>
    }
    Si par contre tu lies les lib en dynamique, je pense pas que ça fonctionne.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Salut,

    pas de chance pour toi
    En général un workaround est de mettre ton include dans un namespace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    namespace MYSQL {
    #include <mysql.h>
    }
    Si par contre tu lies les lib en dynamique, je pense pas que ça fonctionne.
    Ah parfait un grand merci à toi, je n'avais jamais rencontré ce problème et je n'ai aps non plus des années de ++ derrière moi :

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par simon884 Voir le message
    Bonjour à tous,

    J'ai un petit problème de compilation sur une re définition de structure. Je suis actuellement entrain de faire un petit programme qui utilise tesseract, jusque là pas de problème, j'ai maintenant besoin d’utiliser l'API MySQL, et là lorsque j'inclus mysql.h ainsi que baseapi.h pour tesseract au moment de la compilation j’obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    In file included from /usr/include/mysql/mysql.h:75:0, from ocr.cpp:4:
            /usr/include/mysql/my_list.h:26:3: error: conflicting declaration ‘typedef struct st_list LIST’
    In file included from ocr.cpp:2:0:
             /usr/include/tesseract/baseapi.h:58:19: error: ‘LIST’ has a previous declaration as ‘typedef struct list_rec* LIST’
    Le problème est donc que dans mes 2 fichier h dispose d'une structure semblable, alors ma question est, comment résoudre ce problème est-il possible de faire une namespace dans mon main pour une des 2 structure ?
    Pourquoi t'obstine tu à coder "comme en C" alors que tu viens poser tes question dans la section C++

    De deux choses l'une : ou bien, tu code en C++, et, dans ce cas, il serait plus qu'intéressant de perdre tes habitudes issues du C pour prendre les (bonnes) habitude propres au C++, soit tu t'es trompé de section, mais, dans ce cas, sans voir ton code, il nous est impossible de savoir si tu n'essayes pas d'inclure des notions de C++ qui seront refusées en C.

    En l'état, il est impossible de faire "la part des choses", mais il me semble plus qu'important que tu fasses un choix rapide du langage que tu compte utiliser
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Salut,

    Pourquoi t'obstine tu à coder "comme en C" alors que tu viens poser tes question dans la section C++

    De deux choses l'une : ou bien, tu code en C++, et, dans ce cas, il serait plus qu'intéressant de perdre tes habitudes issues du C pour prendre les (bonnes) habitude propres au C++, soit tu t'es trompé de section, mais, dans ce cas, sans voir ton code, il nous est impossible de savoir si tu n'essayes pas d'inclure des notions de C++ qui seront refusées en C.

    En l'état, il est impossible de faire "la part des choses", mais il me semble plus qu'important que tu fasses un choix rapide du langage que tu compte utiliser
    ???
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    ???
    Déjà rien que le fait de voir un typedef struct st_list LIST dans un code C++, moi, ca m’horripile!!

    C'est -- peut-être -- un alias de type qui te viens d'un fichier d'en-tête de la biblitohèque que tu utilises, mais, si ca vient de ton code perso, il est largement temps de revoir les bases du C++
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Déjà rien que le fait de voir un typedef struct st_list LIST dans un code C++, moi, ca m’horripile!!

    C'est -- peut-être -- un alias de type qui te viens d'un fichier d'en-tête de la biblitohèque que tu utilises, mais, si ca vient de ton code perso, il est largement temps de revoir les bases du C++
    Ce n'est pas du code perso, mais un fichier d'en-tête de bibliothèque

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Salut,

    Pourquoi t'obstine tu à coder "comme en C" alors que tu viens poser tes question dans la section C++

    De deux choses l'une : ou bien, tu code en C++, et, dans ce cas, il serait plus qu'intéressant de perdre tes habitudes issues du C pour prendre les (bonnes) habitude propres au C++, soit tu t'es trompé de section, mais, dans ce cas, sans voir ton code, il nous est impossible de savoir si tu n'essayes pas d'inclure des notions de C++ qui seront refusées en C.

    En l'état, il est impossible de faire "la part des choses", mais il me semble plus qu'important que tu fasses un choix rapide du langage que tu compte utiliser
    Euh sauf que les conflits et codes C sont "juste" la lib mysql et tesseract
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  9. #9
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Teseract, c'est aussi de la base de données?
    Parce que sinon, tu as tout intérêt à créer une classe intermédiaire, représentant la donnée pour ton programme.
    Ainsi, tu pourrais répartir l'usage des deux bibliothèques dans deux (ou plus) unités de compilation distinctes.

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Par défaut
    Citation Envoyé par leternel Voir le message
    Teseract, c'est aussi de la base de données?
    Parce que sinon, tu as tout intérêt à créer une classe intermédiaire, représentant la donnée pour ton programme.
    Ainsi, tu pourrais répartir l'usage des deux bibliothèques dans deux (ou plus) unités de compilation distinctes.

    Non non ce n'est pas de la base de donnée, c'est de la reconnaissance de caractères.

    Par contre ta technique de classe intermèdiaire m'intéresse, je veut bien en savoir un peu plus, au cas où je suis confronter à ce problème un jour.

  11. #11
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Si tu encapsule complètement la bibliothèque, en anglais, ca s'appelle un wrapper. Mais ca n'est pas vraiment le besoin ici.

    Si la donnée de ton problème est un texte, ce n'est pas un texte-de-tesseract, ni un texte-de-sql, mais un texte.
    Tu n'auras que des fonctions dédiées
    Ainsi, pour extraire un texte d'une image, tu auras peut-être extraire(image const&, texte&) ou texte extraire_texte(image const&), qui sera la seule à avoir besoin de texte-de-tesseract. Du coup, en la codant dans un fichier à part, seul ce fichier utilisera tesseract.

    Et de même pour l'interaction vers sql.

    C'est la distinction entre code technique et code métier.
    Le problème que gère ton programme doit se coder en code métier.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/04/2009, 18h27
  2. Réponses: 1
    Dernier message: 24/04/2009, 18h27
  3. ca fonctionne mais erreur compilation déclaration sub
    Par petitours dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/12/2007, 18h30
  4. erreur de compilation - conflit avec Sleep
    Par timsah dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/02/2006, 17h52
  5. Erreur compilation DX8.1 VC++ 6
    Par d.vidal dans le forum DirectX
    Réponses: 1
    Dernier message: 10/09/2003, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo