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++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    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 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    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
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    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 sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    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 éminent sénior

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

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    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 sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    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
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    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 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    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 sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    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.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    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 sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    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.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  12. #12
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Ceci dit, si tu en arrives à un point où tu commence à mélanger le besoin d'accéder à une base de donnée et celui de profiter de la reconnaissance de caractères, je me dis qu'il y a peut être un problème de conception, et que tu devrais pouvoir t'arranger pour éviter ce mélange.

    Je m'explique : la reconnaissance de caractères et l'accès (sous la forme de requêtes SELECT s'entend) peuvent tous les deux être considérés comme faisant partie de ce que l'on pourrait appeler "l'acquisition de données", mais, la manière dont tu les acquiéreras sera totalement différente : évaluation de champs d'une part contre évaluation des pixels d'une image de l'autre. Et, même si tu récupères l'image grâce à une requête SQL, tu dois, d'abord et avant tout, travailler sur une image, et non sur un champs de base de donnée.

    Tu as donc "tout loisir" de créer une séparation bien claire entre ce qui a trait à ta base de données et ce qui a trait à la reconnaissance de caractères, et c'est vers cela que tu devrais tendre
    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

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Ceci dit, si tu en arrives à un point où tu commence à mélanger le besoin d'accéder à une base de donnée et celui de profiter de la reconnaissance de caractères, je me dis qu'il y a peut être un problème de conception, et que tu devrais pouvoir t'arranger pour éviter ce mélange.

    Je m'explique : la reconnaissance de caractères et l'accès (sous la forme de requêtes SELECT s'entend) peuvent tous les deux être considérés comme faisant partie de ce que l'on pourrait appeler "l'acquisition de données", mais, la manière dont tu les acquiéreras sera totalement différente : évaluation de champs d'une part contre évaluation des pixels d'une image de l'autre. Et, même si tu récupères l'image grâce à une requête SQL, tu dois, d'abord et avant tout, travailler sur une image, et non sur un champs de base de donnée.

    Tu as donc "tout loisir" de créer une séparation bien claire entre ce qui a trait à ta base de données et ce qui a trait à la reconnaissance de caractères, et c'est vers cela que tu devrais tendre
    Non non je ne mélange rien, en faite la reconnaissance de caractères s'effectue sur une image du type png en utilisant limagick++ et ensuite une fois la reconnaissance effectué je sauvegarde les mots trouvés en base de données tout simplement, la librairie MYSQL me sert seulement à faire un INSERT.

  14. #14
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    C'est justement là que tu mélanges tout.
    Tu as un unique truc qui fait lecture de l'image, extraction de la chaîne, enregistrement dans la DB.
    Là où tu pourrais/devrais avoir un truc pour la lecture de l'image, image que tu passes ensuite à un truc pour extraire la chaîne, chaîne que tu passes ensuite à un dernier truc (tous sont différents hein) qui fait l'enregistrement dans la DB.
    Et que tu lises l'image sur le disque, le web, en raw, ... du png, jpg, psd, ... n'influe en rien sur le code de lecture de la chaîne qui s'y trouve.
    L'extraction de la chaîne se moque de savoir l'origine de l'image, elle n'en connait que son format dans l'application et te sort une chaîne.
    Et l'enregistrement dans la DB est totalement indépendant du reste, tu pourrais enregistrer des chaînes sorties d'un fichier texte, entrées par l'utilisateur ou peu importe.

    Que tu utilises tesseract pour le point 2, mysql pour le point 3 ou n'importe quoi qui le permette, ils ne peuvent/doivent absolument jamais entrer en conflit.
    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.

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Bousk Voir le message
    C'est justement là que tu mélanges tout.
    Tu as un unique truc qui fait lecture de l'image, extraction de la chaîne, enregistrement dans la DB.
    Là où tu pourrais/devrais avoir un truc pour la lecture de l'image, image que tu passes ensuite à un truc pour extraire la chaîne, chaîne que tu passes ensuite à un dernier truc (tous sont différents hein) qui fait l'enregistrement dans la DB.
    Et que tu lises l'image sur le disque, le web, en raw, ... du png, jpg, psd, ... n'influe en rien sur le code de lecture de la chaîne qui s'y trouve.
    L'extraction de la chaîne se moque de savoir l'origine de l'image, elle n'en connait que son format dans l'application et te sort une chaîne.
    Et l'enregistrement dans la DB est totalement indépendant du reste, tu pourrais enregistrer des chaînes sorties d'un fichier texte, entrées par l'utilisateur ou peu importe.

    Que tu utilises tesseract pour le point 2, mysql pour le point 3 ou n'importe quoi qui le permette, ils ne peuvent/doivent absolument jamais entrer en conflit.
    Ok je vois, mais je vous cache pas que j'ai un peu de mal a comprendre comment éviter ce conflit, sachant que le conflit que j'ai eu venait des includes de mes 2 librairies, donc d'après vous je devrais si j'ai bien compris ré écrire la ou les les fonctions dont j'ai besoin?

  16. #16
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Relis mon précédent message.

    Il suffit que les deux fonctions extraire et sauvegarder soient définies dans deux .cpp différents. Chacun n'a besoin que d'un seul des includes.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  17. #17
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    @Bousk et @Koala, vous allez pas un peu vite? Il n'a montré qu'une erreur et vous partez bille en tête en disant qu'il mélange tout.

    Ou alors vous souhaiteriez qu'il écrive une lib pour chaque fonctionnalité (une lib d'OCR, une lib d'insertion en BDD) ?
    Il est possible que je ferais comme cela, mais on ne connait rien de ses contraintes, ni de son code.
    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).

  18. #18
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    @Bousk et @Koala, vous allez pas un peu vite? Il n'a montré qu'une erreur et vous partez bille en tête en disant qu'il mélange tout.

    Ou alors vous souhaiteriez qu'il écrive une lib pour chaque fonctionnalité (une lib d'OCR, une lib d'insertion en BDD) ?
    Il est possible que je ferais comme cela, mais on ne connait rien de ses contraintes, ni de son code.
    Non, nous n'allons absolument pas trop vite!

    Il a été clairement défini que le problème vient du fait que, quelque part dans son code, deux fichiers inclus entrent en conflit et que ces fichiers font partie d'une bibliothèque de reconnaissance de caractères pour l'un et d'une bibliothèque d'accès à une base de données pour l'autre.

    Ceci étant établi, il est facile de déterminer que le PO doit travailler selon un ordre bien précis qui est :
    1. le chargement d'une image (quelle qu'en soit le format / l'origine)
    2. le traitement d'image pour en récupérer les caractères qui s'y trouvent
    3. la génération de chaines de caractères composés des caractères que l'on vient d'extraire
    4. la sauvegarde de ces chaines de caractères dans une base de données.

    le seul point commun entre le (1) et le (2), c'est que l'on travaille sur des image. Tu dois donc avoir une abstraction qui te permette de représenter cette image
    le seul point commun entre le (2) et le (3), c'est que l'on travaille avec des caractères, qui n'ont absolument rien à voir avec la notion d'image et qui se foutent pas mal d'avoir été calculés au travers d'une bibliothèque prévue pour
    le seul point commun entre le (3) et le (4), c'est la notion de chaine de caractères.

    Dés lors, il semble évident que ces quatre point doivent pouvoir travailler de manière totalement autonome, d'autant plus que le PO nous indique qu'il est justement confronté à un problème lorsque ce n'est pas le cas et que, au final, la sauvegarde dans la base de données se fout pas mal de savoir l'origine des chaines de caractères qu'elle doit sauvegarder

    Où donc vois tu que nous allions "un peu vite" en besogne
    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

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