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 :

Passage VC6-> VS2008: erreur dans les fichiers internes à Visual lors de la compilation


Sujet :

Visual C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Passage VC6-> VS2008: erreur dans les fichiers internes à Visual lors de la compilation
    Bonjour,

    Dans le cadre de mon travail, on m'a demandé de passer une solution de Visual C++6 vers Visual Studio 2008. Sous visual 6, la solution compile sans problème.

    Après avoir pris en compte un certain nombre de modifications dans les 6 projets qui composent la solution (du type ajouter des déclarations de variables entières dans les boucles "for", ou faire des modifications pour passer les bons types en entrée), la compilation se passe bien pour 5 d'entre eux.

    J'ai toutefois été forcé d'ajouter aux projets les chemins des "include" de VC, certains fichiers ".h" ne se trouvant pas dans ceux de Visual studio 2008. Ce point déjà me semble surprenant... mais ça marche...

    En revanche, lors de la compilation du 6ème projet, qui dépend des 5 autres et doit conduire à la création d'un fichier exécutable, la compilation s'arrête -le nombre d'erreur dépasse les 100 par fichier-...

    Ce qui est surprenant et pose problème, c'est que toutes ces erreurs ce situent dans des fichiers propres à Visual Studio 2008! les fichiers en question se trouvent dans:
    c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\ ou dans c:\program files\microsoft visual studio 9.0\vc\include...

    et les erreurs sont de type:
    - error C2065: 'DWORD_PTR' : identificateur non déclaré
    - error C2143: erreur de syntaxe : absence de ';' avant 'GetWindowThreadProcessId'
    - error C2065: 'LLONG_MIN' : identificateur non déclaré
    - error C3861: 'memcpy_s' : identificateur introuvable
    ... [je passe, il y en a 7650, toutes du même genre]

    Or, ces fichiers n'ont pas été modifiés dans le cadre du projet!!
    Les erreurs étant du même type, sur des fichiers dans le même dossier, j'ai tendance à supposer qu'il s'agit d'une question de configuration de visual, mais sans certitude...

    Quelqu'un aurait-il déjà rencontré le même type d'erreur et pourrait-il m'éclairer? Merci d'avance.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Flore22 Voir le message
    Quelqu'un aurait-il déjà rencontré le même type d'erreur et pourrait-il m'éclairer? Merci d'avance.
    C'est l'interface de certaines fonctions MFC qui a été changé, le plus flagrant étant les CString.

    Tu auras une partie de la réponse sur cette page. Comme tu as fait un gros saut de version (j'ai fait le même d'ailleurs), tu vas devoir concaténer manuellement toutes les modifications avec rupture (Breaking Changes) de chaque version intermédiaire.
    Pour ma part, sur un problème similaire, j'ai dû réécrire la callback intégralement pour la faire coller aux nouveaux paramètres (cf. aide MFC VS2008 pour savoir quoi faire/mettre).

    Quelques tuyaux :
    • Macro _USE_32BIT_TIME_T pour les problèmes sur time_t.
    • Pour les versions sécurisées des fonctions CRT/STL : _CRT_SECURE_NO_WARNINGS et _SCL_SECURE_NO_WARNINGS.
    • Vérifier attentivement les CString dans le code MFC.
    En espérant t'avoir aidé.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci pour le lien! Il me sera probablement utile, mais malheureusement pas dans l'immédiat... (je note toutefois le raisonnement, je vais me plonger dans ces sauts pour voir s'ils ne résolvent pas d'autres erreurs) :

    La première erreur que j'obtiens lors de la compilation, récurrente, est la suivante:

    c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlalloc.h(80) : error C2065: 'LLONG_MIN'*: identificateur non déclaré
    Dans le lien que tu me donnes, on indique que la version antérieure de visual acceptait que les paramètres d'une fonctions soient entre guillemets alors qu'il ne s'agissait pas de chaine de caractères, ou l'inverse (que le paramètre n'ait pas de guillemets alors qu'il s'agissait d'une chaine). Ceci donne une erreur C2065 (comme la mienne!).

    Si ce n'est que dans le code de ma machine, le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public:
    	static const long long _Min=LLONG_MIN;
    	static const long long _Max=LLONG_MAX;
    };
    et LLONG_MIN n'est -d'après la console d'erreur- pas déclaré...
    Je veux bien le déclarer, mais le fichier est un fichier Visual... (voir chemin d'accès). Et je suppose que Visual fournit des fichiers corrects...

    Les autres erreurs y ressemblent... La deuxième, qui porte sur la même ligne que la première, est la suivante:
    c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlalloc.h(80) : error C2057: expression constante attendue
    Bref, ça ressemble à des erreurs de débutant (oubli de déclaration, mettre une variable à la place d'une constante,...), sauf que c'est du code visual... ce qui me surprend...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 157
    Points : 12 271
    Points
    12 271
    Par défaut
    Faite particulièrement attention aux "#ifdef" qui encadrent les déclarations que le pre-processeur ne trouve pas. Je pense qu'un petit nombre de constantes de compilation permettraient de rendre le vieux code plus acceptable pour le jeune compilateur.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Faite particulièrement attention aux "#ifdef" qui encadrent les déclarations que le pre-processeur ne trouve pas. Je pense qu'un petit nombre de constantes de compilation permettraient de rendre le vieux code plus acceptable pour le jeune compilateur.
    C'est typiquement le cas de _USE_32BIT_TIME_T, par exemple...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    J'ai fini par trouver une solution, mais dont les implications m'échappent...

    Le projet fait référence à des bibliothèques qui se trouvent sur un lecteur externe (lecteur N:\ pour info). Le chemin de ce lecteur était indiqué dans les propriétés d'un projet qui refusait de compiler (dans Propriétés de configuration/ C C++/ Général/ autres fichiers Include).
    J'avais précédemment résolu cette erreur de compilation en supprimant ce chemin des pages de propriétés du projet, et en le mettant dans Outils/Options puis Projets et Solutions/ répertoires de VC++ puis sélectionner dans le menu déroulant de gauche "Fichiers Include".

    Le projet en question compilait alors, mais pas le projet global, dépendant des 5 autres. Après multiples essais et recherches en tout genre, je me suis rendu compte que ce dernier projet faisait référence, dans ses propriétés, au chemin du lecteur N:\. La solution pour faire compiler la solution complète a alors consisté en la suppression de la référence à N:\ dans les propriétés du dernier projet (N:\ étant néanmoins recensé dans les fichiers Include globaux). Ou comment passer de 7650 erreurs à 160 (résolvables).

    C'est pas très très propre... Heureusement, il s'agit de la seule solution sur laquelle je travaille avec Visual studio.

    En résumé, j'ai supprimé la référence à un dossier d'include des propriétés des projets, pour le mettre une unique fois dans Outils/options. La double référence à ce dossier d'include ne convenait pas au compilateur. Chose étrange, l'inclusion dans les propriétés de chaque projet ne convenait pas non plus, et il a fallu le mettre une seule et unique fois dans les options globales de compilation.

    A ce jour, la solution compile! (ne linke pas encore, mais c'est une autre histoire...)
    Merci pour votre aide!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/04/2014, 12h46
  2. erreur dans les liens internes à une page
    Par webfds dans le forum Langage
    Réponses: 4
    Dernier message: 12/10/2010, 18h59
  3. Erreur de compilation dans les fichier d'en-tête
    Par belgariel dans le forum Linux
    Réponses: 5
    Dernier message: 02/03/2010, 10h05
  4. Réponses: 3
    Dernier message: 11/06/2009, 17h49
  5. [Servlet] Erreur dans le fichier web.xml
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/07/2004, 15h20

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