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 de warning en compilant win32 + directx


Sujet :

VC++ .NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut problème de warning en compilant win32 + directx
    Bonjours, je galère un peu avec VC++ 2005, deja j ai mis pas mal de temp avant de pouvoir compiler du code win32, je suis tombé sur un tutorial pour migrer de vc++ 6.0 vers vc++ 2005 qui m a bien aidé. ceci dit il perciste un problème j ai de belle liste de warning a chaque compilation dont je vous laisse un extrait:

    ..\..\Common\Src\d3dfile.cpp(28) : warning C4996: '_tcsncpy' a été déclaré désapprouvé
    E:\visual 2005\VC\include\tchar.h(1467)*: voir la déclaration de '_tcsncpy'
    Message*: 'This function or variable may be unsafe. Consider using _tcsncpy_s instead. To disable deprecation, use

    ..\..\Common\Src\dxutil.cpp(60) : warning C4996: 'strcat' a été déclaré désapprouvé
    E:\visual 2005\VC\include\string.h(78)*: voir la déclaration de 'strcat'
    Message*: 'This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE.

    ..\..\Common\Src\dxutil.cpp(712) : warning C4996: '_snprintf' a été déclaré désapprouvé
    E:\visual 2005\VC\include\stdio.h(339)*: voir la déclaration de '_snprintf'
    Message*: 'This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

    ..\..\Common\Src\dxutil.cpp(745) : warning C4996: 'strcpy' a été déclaré désapprouvé
    E:\visual 2005\VC\include\string.h(73)*: voir la déclaration de 'strcpy'
    Message*: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

    ..\..\Common\Src\dxutil.cpp(842) : warning C4996: '_vsnprintf' a été déclaré désapprouvé
    E:\visual 2005\VC\include\stdio.h(339)*: voir la déclaration de '_vsnprintf'
    Message*: 'This function or variable may be unsafe. Consider using _vsnprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

    ..\..\Common\Src\dxutil.cpp(868) : warning C4996: 'sscanf' a été déclaré désapprouvé
    E:\visual 2005\VC\include\stdio.h(311)*: voir la déclaration de 'sscanf'
    Message*: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

    .\gfx_motor.cpp(1520) : warning C4996: 'sprintf' a été déclaré désapprouvé
    E:\visual 2005\VC\include\stdio.h(345)*: voir la déclaration de 'sprintf'
    Message*: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

    .\geo_motor.cpp(496) : warning C4996: 'sscanf' a été déclaré désapprouvé
    E:\visual 2005\VC\include\stdio.h(311)*: voir la déclaration de 'sscanf'
    Message*: 'This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE.

    Bon l histoire c est que ces warning ce multipli gentiment durant la compilation, bien que cela n empèche pas le programme de fonctionner correctement, ca fait désordre et pour retrouver un message d erreur dans ce foutoire ca devient vite aggacent.

    Si quelqu un pouvais m expliquer ce que je dois faire pour y remedier, ce serait sympa, d autant que dans de nombreux cas le problème vient du code du sdk directx

    en remerciant par avance ceux qui m accorderons quelques precise minute

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est la nouvelle lubie de Microsoft, la "Secure CRT", qui ajoute un peu plus de non-standard dans le code (il y a une version dite "secure" de fopen(), qui ne sert à rien sinon à empêcher d'utiliser la vraie fopen() sans se faire gueuler dessus . Mais le pire pour moi, c'est que le C99 vient de nous donner une superbe fonction snprintf() standard qui fait tout sauf le café, et que Microsoft ne propose aucun équivalent direct dans sa "Secure CRT" ).

    Pour faire partir les Warnings, tu peux remplacer tous tes appels de fonctions dépréciées par les "nouvelles" fonctions, ou simplement ajouter _CRT_SECURE_NO_DEPRECATE dans les options du projet:
    Project Properties -> Configuration properties -> C/C++ -> Preprocessor -> Preprocessor definitions
    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
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Grand merci a toi Médinoc, c est deja beaucoup plus clair dans le listing de sortie du coup je retrouve plus facilement mes erreurs syntaxique

    Hélas du coup je me suis appercu que j en ai une autre qui reviens pas mal de fois alors si tu connais la methodes ce serait vraiment cool, Promis c est la dernière (merci microsoft)

    e:\visual 2005\zulta_b01\d3dutil.h(139) : warning C4324: 'CD3DCamera'*: la structure a été remplie à cause de __declspec(align())

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ah, j'avais oublié ce Warning là.
    Donc, tu as ici une structure (ou plutôt une classe, vu le nom) possédant l'attribut __declspec(align(un nombre)), et cela cause l'insertion d'octets de bourrage dedans. Le compilateur te prévient gentiment de ce fait au cas où tu ne t'y attendrais pas.

    Le mieux je pense, c'est d'entourer la déclaration de la structure de pragmas qui désactivent temporairement ce warning:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #pragma warning(push)
    #pragma warning(disable:4324)
     
    class __declspec(align( /*...*/ )) CD3DCamera
    {
    //...
    };
     
    #pragma warning(pop)
    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
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Excellent, je te remerci pour les infos, je vais enfin pouvoir passer a autre chose et laisser vc++ 6 dans un coin

    encore merci

Discussions similaires

  1. [VC++ Express] Problème de compilation win32.
    Par fab29000 dans le forum MFC
    Réponses: 1
    Dernier message: 15/02/2006, 20h16
  2. Problème de linker à la compilation
    Par screeminelle dans le forum C++
    Réponses: 8
    Dernier message: 27/10/2005, 16h20
  3. Réponses: 7
    Dernier message: 27/09/2005, 21h40
  4. [CDT] problème de build et compil (make -k)
    Par Prodejeu dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 02/11/2004, 23h18
  5. [Linux]Problème System.out.println + compiler
    Par Dnx dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/09/2004, 22h05

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