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

Visual C++ Discussion :

problème avec la bibliotheque cimage en utilisant vc++ 6.0


Sujet :

Visual C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 98
    Points : 36
    Points
    36
    Par défaut problème avec la bibliotheque cimage en utilisant vc++ 6.0
    bonjour,

    j'ai essayé de compilé un exemple fournie dans le manuel de reference de la bibliotheque cimage 1.4.6 voir ci dessous.

    donc j'ai créer un nouveau projet win32 console application et j'ai copié le code ci dessous dans le fichier source file.
    après compilation j'ai obtenu plein d'erreur malgré que j'ai ajouté le cimage.h dans mon projet.

    les erreurs sont de ce type:
    error C2039: 'FILE' : is not a member of 'std'
    error C2039: 'va_list' : is not a member of 'std'
    error C2039: 'fprintf' : is not a member of 'std'
    error C2039: 'memset' : is not a member of 'std'
    .
    .
    j'utilise la dernière version de cimage 1.4.6 avec windows xp et vc++ 6.0.

    c'est bien indiqué dans son manuel que je peux utiliser vc++ 6.0 a la page 13
    Microsoft Visual C++ 6.0, Visual Studio.NET and Visual Express Edition : Use project files and solution files provided in the CImg Library package (directory ’compilation/’) to see how it works.
    merci d'avance


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include "CImg.h"
     
    using namespace cimg_library;
    int main() {
    CImg<unsigned char> img(640,400,1,3); // Define a 640x400 color image
    with 8 bits per color component.
    img.fill(0); // Set pixel values to 0 (color
    : black)
    unsigned char purple[] = { 255,0,255 }; // Define a purple color
    img.draw_text(100,100,"Hello World",purple); // Draw a purple "Hello world" a
    t coordinates (100,100).
    img.display("My first CImg code"); // Display the image in a displa
    y window.
    return 0;
    }

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Vu les messages d'erreur, je pense qu'il s'agit bien d'évolutions de cimg qui la rendent incompatible avec VC6.

    Tout d'abord, solution la plus simple : Es-tu vraiment obligé de travailler avec VC6 ? Ce compilo est très vieux, et ne supporte pas bien la norme C++ (la preuve...).

    Sinon, solution une peu moins simple, mais simple quand même, mais crade : Remplace dans Cimg.h tous les std::fprintf par fprintf, std::FILE par FILE...

    Solution plus propre : Ajoute un #if testant la version de VC++, en fonction de ça, met un
    ou un
    Et remplace les std:: à problème par STDC:: (attention, ne les remplace pas tous, certains ont besoin d'être là même avec VC6. Remplace uniquement ceux où il y a des erreurs).

    Finalement, dernière étape, soumets tes modifs à l'auteur de cimg.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Bonjour,

    La solution est de faire un shift+suppr sur le répertoire de vc6.

    Pour éviter que la contagion ne se répande, je conseille aussi un formatage du disque dur, puis un sacrifice par le feu du PC et du programmeur qui a été en contact (désolé, tu vas devoir y passer )

    Comme workaround, tu peux probablement supprimer les std:: dans Cimg.h devant les FILE, fprintf, memset comme le dit le message d'erreur.

    C'est vrai que le manuel assure la compatibilité avec vc6 mais je soupçonne que cela a été vrai temporairement il y a quelques années, puis que cette compatibilité a été cassé quelques part pendant le développement et que personne n'a testé sur vc6 depuis.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Citation Envoyé par Arzar Voir le message
    Pour éviter que la contagion ne se répande, je conseille aussi un formatage du disque dur, puis un sacrifice par le feu du PC et du programmeur qui a été en contact (désolé, tu vas devoir y passer )
    Comme j'aimerais que cela puisse se faire plus souvent vu le nombre de projets utilisant encore VC6 et dont il est impossible de le faire changer au client

    Pour des compilations en fonction de la version du visual : Directive de compilation Visual C++.
    Ce qui devrait donner avec la solution de Loïc par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if _MSC_VER == 1200
       #define STDC
    #else
       #define STDC std
    #endif

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 98
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Salut,
    Comme j'aimerais que cela puisse se faire plus souvent vu le nombre de projets utilisant encore VC6 et dont il est impossible de le faire changer au client

    Pour des compilations en fonction de la version du visual : Directive de compilation Visual C++.
    Ce qui devrait donner avec la solution de Loïc par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if _MSC_VER == 1200
       #define STDC
    #else
       #define STDC std
    #endif
    bonjour,

    j'ai installé visuel c++ 2010 et j'ai laissé tomber vc++ 6.0.

    c'est bien avec visuel c++ 2010 l'exemple sa marche sans pb.

    merci bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/06/2010, 11h16
  2. Réponses: 1
    Dernier message: 16/08/2009, 01h57
  3. Réponses: 0
    Dernier message: 20/04/2009, 10h49
  4. Réponses: 2
    Dernier message: 23/02/2009, 11h23
  5. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56

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