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 :

[Error C3163] Problème avec _vsnprintf et VS 9.0


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [Error C3163] Problème avec _vsnprintf et VS 9.0
    Bonjour,

    Je reprends un projet compilé avec VC++ 2005 et wxDev-cpp et à la compilation ce message apparait :
    358 C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h [Error C3163] '_vsnprintf'ÿ: attributs non cohérents avec la déclaration qui précède

    J'ai essayé plusieurs inclusions du fichier stdio.h et j'ai également vu qu'il y avait un problème de définition de la fonction. Pourriez-vous m'aider s'il vous plait ?

    pititmat90

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    Apparemment, problème connu :
    Ci-dessous, une "résolution" possible :
    http://rjeng.blogspot.com/2008/06/vc...ttributes.html

    Cordialement,
    Agamitsudo.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour ta réponse premièrement.
    Mais j'avais déjà vu cela et je n'utilise pas cette bibliothèque par contre j'utilise wxwidgets, le problème peut-il venir de là ?

    Cordialement,

    pititmat90

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    Par défaut
    Re-bonjour,

    Oui, car il est possible (probable) que wxwidgets apporte une redéfinition de vsnprintf.
    Donc, il faut rechercher cette définition du type ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define vsnprintf(a, b, c, d) _vsnprintf(a, b, c, d)
    Et la commenter.

    Cordialement,
    A.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Re-bonjour,

    J'ai trouvé cela dans wxchar.h :


    For some systems [v]snprintf() exists in the system libraries but not in the
    headers, so we need to declare it ourselves to be able to use it.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #if defined(HAVE_VSNPRINTF) && !defined(HAVE_VSNPRINTF_DECL)
    #ifdef __cplusplus
        extern "C"
    #else
        extern
    #endif
        int vsnprintf(char *str, size_t size, const char *format, va_list ap);
    #endif /* !HAVE_VSNPRINTF_DECL */
    J'avoue ne pas trop maitriser tout ce qui est .h, mais cela a l'air d'avoir un rapport avec ce que tu viens de me suggérer, non ?

    Merci de ton aide,

    Pititmat90

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    Par défaut
    Re-bonjour,

    Fait le test de commenter le bout de code que tu viens de poster.
    Cordialement,
    A.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


  7. #7
    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
    Plutôt que de commenter la ligne, définit la macro HAVE_VSNPRINTF_DECL dans ton projet. Ca t'évites de toucher au source

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos propositions, j'ai testé et cela n'a pas permis de régler le problème.

    Je pense que que le soucis vient peut-être du fait que je ne sais pas quelle bibliothèque fait appel à stdio.h et à quel moment. Rien ne me dit que c'est le bon stdio.h qui est appelé au moment oppurtun. J'ai celui de wxDev-cpp et celui de VS au moins. Ensuite d'autres bibliothèques peuvent certainement en appeler d'autres dès qu'elle en ont besoin.

    Je ne sais pas si j'arrive bien à exprimer ma pensée mais il faudrait que je trouve le moyen que seul celui de Visual Studio soit appelé. Après, je ne sais pas si telle est la solution.

    pititmat90

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Hi,

    est ce que tu pourrais poster les options de projet et de compilateur, cela aidera peut-être.

    ps : le .h est un fichier dit 'header' qui contient les prototypes des fonctions (les noms, types passés, et renvoyés), ainsi que les déclaration de classe, et qui permet au compilateur de vérifier la cohérence du code.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Les options de projet sont les suivantes :
    dans les répertoires d'inclusion je fais appel aux différentes API et dossiers "include" nécessaires. Avec notamment VS, microsoft SDK

    Les options de compilateur :
    je fais de même en spécifiant de plus les dossier binaires et les bibliothèques nécessaires, par exemple :
    C:\Program files\Microsoft SDK\..lib
    C:\Program files\Visual studio 9.0\VC\lib\

    Je spécifie également le compilateur VC++ 2005

    A tout ceci il faut ajouter les options par défaut de wxDev-cpp qui comprennent déjà les paramètres concernant wxWidgets.

    Je pense avoir tout mentionné.

    Cordialement,

    pititmat90

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    A l'aide d'une version émulée d'XP sous Ubuntu, j'ai supprimé la déclaration de vsnprintf dans stdio.h et la compilation, ainsi que tout le reste à fonctionner. Je pense que cela est du à la déclaration présente dans wxchar.h qui est plus ancienne. Il y a donc confirmation que le problème est du à une redéfinition de cette fonction dans Visual Studio 9.0 .

    Pour résoudre le problème, il faut soit passer à la version antérieure de visual studio, soit remplacer stdio.h par une précédente version. Avez-vous d'autres propositions ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/05/2007, 16h43
  2. [TP 7] Problème avec les listes chaînées (error 202)
    Par thelinekioubeur dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 06/12/2006, 23h15
  3. [TP] Problème avec Error 202
    Par Petrucci dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 11/11/2006, 22h37
  4. Réponses: 3
    Dernier message: 17/09/2006, 23h13
  5. Réponses: 21
    Dernier message: 02/10/2005, 19h05

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