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

VC++ .NET Discussion :

Problème avec tesseract OCR sous Visual c++ 2005


Sujet :

VC++ .NET

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 67
    Points
    67
    Par défaut Problème avec tesseract OCR sous Visual c++ 2005
    Bonjour tout le monde, je pense que vous le savez déja tesseract (logiciel de reconnaissance de caratère http://sourceforge.net/projects/tesseract-ocr) est devenu libre depuis peu, je l'ai téléchargé, le logiciel est prétendu être multiplatforme (cf documentation fournis avec, d'après cette dernière le logiciel compile et tourne a la fois sous windows et sous linux). J'ai réussie a le faire tourner sous cygwin sans trop d'encombres, des amis a moi le font tourner sans pb sous linux, mais impossible de le compiler sous visual studio 2005 sp1, et ce malgrès le fichier de projet (visual studio 6 ) fournis avec, j'ai 4 erreurs qui sont en fait les mêmes, les fonctions strrchr et strchr retourne sous unix un char*, et sous visual c++ un const char*. Ce problème est mis en évidence lorsqu'on affecte un const char* a un char*. j'ai eu 2 solutions pour le résoudre:
    -la première la plus bourrine (a mon image ^^) aller directement modifier le fichier string.h (j'en ai fait une sauvegarde avant quand même on se sait jamais...)dans le répertoire de visual studio, pour que les fonctions concernés retournent un char* et non pas un const char*, en tout 2 lignes de modifiés, le programme compile, l'executable est généré, mais ne fonctionne pas, et ne renvoie aucun message d'erreur.
    -la 2ème plus fine (ou plutôt moin stupide) consiste modifier les lignes concernés de façon à "gommer" l'erreur, une vingtaines de lignes rajoutés en tout, rien de très compliqué, ça compile, mais ça ne fonctionne pas et renvoie aucun message d'erreur (j'avais restauré avant le fichier string.h).

    Est-ce que quelqu'un a été confronté a ce problème et l'a résolu, ou sait pertinement que c'est pas la peine d'essayer de le compiler sous visual studio 2005 ?

    D'avance merçi

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    strchr() et strrchr() retournent un char* en C, mais sont censées être surchargées en C++ pour retourner un char* ou un const char * selon la constance ou non de la chaîne passée en paramètre.

    J'en déduis donc que tu es en C++.
    Je n'ai pas tesseract, mais si tu modifies les lignes concernées, on peut voir comment tu fais exactement ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 67
    Points
    67
    Par défaut
    voiçi la ligne qui pose problème : char * arg = strchr (arglist, argv[optind][1]);
    moi je met a la place:
    char*tmp=(char*)malloc( strlen(strchr (arglist, argv[optind][1])) + 1);
    strcpy(tmp,strchr (arglist, argv[optind][1]));
    char* arg=tmp;

    J'avoue c'est pas très élégant mais bon :s.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    1. arglist est donc déclaré en const char * ?
      J'ignore si c'est standard ou non, mais c'est normal que strchr() ne marche pas là-dessus : Le fait que ça marchait est une atteinte à la const-correctness. Tu as donc le choix entre deux solutions:
      • remplacer le char* par un const char * si aucune écriture n'est tentée dessus,
      • ou dupliquer la chaîne avant d'appeler strchr().
    2. Le malloc()+strcpy() peut paraître crade en effet. Tu devrais utiliser la fonction strdup() (ou _strdup()) qui fait le travail...
    3. Attention aux fuites de mémoire...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 67
    Points
    67
    Par défaut
    Oui, le arglist est un const char*

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/09/2007, 07h55
  2. Réponses: 1
    Dernier message: 22/08/2007, 15h48
  3. crystal report sous visual studio 2005 avec web form
    Par beabea dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/04/2007, 17h13
  4. Problème de linkage sous visual studio 2005 sp1 avec gtk+
    Par DarkVenoM dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 26/03/2007, 18h50
  5. problèmes avec un dialogue sous visual 2002
    Par twinseb dans le forum MFC
    Réponses: 3
    Dernier message: 29/11/2006, 15h59

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