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 :

migration vieille appli C vers windows server 2008 / windows 7


Sujet :

C

  1. #1
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Points : 2 739
    Points
    2 739
    Par défaut migration vieille appli C vers windows server 2008 / windows 7
    bonjour tout le monde,

    je suis depuis récemment sur une TMA dans le cadre de laquelle je dois faire migrer un vieil applicatif écrit en C sous windows server 2008 en 64 bits (entre autres).

    et là je dois avouer que je suis plutôt perdu parce que je suis loin d'être super à l'aise en C.

    donc, premier test, j'essaie simplement d'installer sous windows server 2008 la version de l'appli qui tourne sur windows XP (on sait jamais). ca fonctionne à moitié: certains "modules" de l'appli sont opérationnels, mais un des modules me génère une erreur sur un appel de la fonction OpenFileMapping. un GetLastError() me renvoie alors le code 2 qui semble indiquer qu'un fichier n'a pas été trouvé (ERROR_FILE_NOT_FOUND), alors que la création du "file mapping" par CreateFileMapping n'a généré aucune erreur...

    ma première question est donc la suivante: l'un d'entre vous a t il une idée de ce qui peut se passer?


    bref, étant donné que j'avance pas sur cette investigation, je me suis dit que j'allais tenter de compiler tout ça directement sur Windows server 2008, avec visual studio 2008 (v9.0). la encore, on sait jamais...
    mais en fait le projet a été développé avec iostream.h, que le compilateur de VS2008 ne connait pas. donc en cherchant un peu, je décrouvre que iostream.h c'est de la merde (c'est pas moi qui le dit hein ) et que maintenant, il faut utiliser iostream avec un "using namespace std;" après les include... l'erreur concernant iostream.h n'est alors plus qu'un souvenir, mais j'en ai bien d'autres, notamment des
    "error C2143: erreur de syntaxe*: absence de '{' avant ':' "
    par dizaines dans le fichier cstdio sur des instruction du genre "using ::_Filet;".
    après quelques recherches, j'apprends que cstdio est la version standardisée de stdio.h (sauf erreur de ma part?). mais que j'inclue stdio.h ou cstdio, c'est la même chose et les mêmes erreurs. une autre recherche sur le mots clés du langage C semble montrer que le mot "using" fait partie du C++ et non du C; et que le fichier cstdio en est plein (de using)...

    j'en viens donc ma 2e (série de) question(s):
    y a t il un truc que j'ai compris de travers (voire pas du tout)?
    comment puis-je continuer à utiliser iostream.h avec vs2008 ou à défaut, y a t il une façon d'utiliser iostream avec du C?

    merci d'avance aux âmes charitables et cultivées qui sauront me répondre

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Alors, première question bête.
    Dans ws2008, je crois qu'il existe un mode de compatibilité XP. L'as tu essayé ?

    Sinon, la plupart des problèmes que j'ai vu concernant une migration XP->7 sont dus à des problèmes de permissions sur les fichiers.

    En effet, par défaut, il est impossible d'écrire dans le dossier c:\program files\.

    Quels sont les paramètres de CreateFileMapping ?

    Concernant iostream, stdio...

    iostream est le fichier d'entête à utiliser en c++. Il défini des variables et des fonctions dans le namespace std là où iostream.h les défini dans l'espace global.

    Donc avec iostream, on pouvait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cout << "Hello";
    ::cout << "Hello";
    Alors qu'avec iostream, il faudra écrire
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    using namespace std;
    cout << "hello";

    cstdio est la version c++ de stdio.h.
    En théorie donc, si on programme en c++ mais qu'un a besoin d'une fonction C comme sscanf par exemple, il faudrait inclure cstdio.
    Cela dit, certains compilateur c++ ne sont pas conformes et ne proposent pas de cstdio.

    comment puis-je continuer à utiliser iostream.h avec vs2008 ou à défaut, y a t il une façon d'utiliser iostream avec du C?
    En C, on utilise stdio.h, le reste, c'est du c++.
    Cela dit, si iostream.h était inclus dans le projet, cela doit être du c++.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Points : 2 739
    Points
    2 739
    Par défaut
    pour répondre à la question "bête", non j'ai pas essayé de mode de compatibilité XP, je regarderai ca


    sinon, voici l'appel de CreateFileMapping tel qu'il apparait dans le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    s_hFmQueue = CreateFileMapping((HANDLE) 0xFFFFFFFF, 
        &sa,//Avant modiff NULL, 
        PAGE_READWRITE, 0, 
        MAX_Q*MAX_MSG * sizeof(MsgElemT),
        QUEUEMAP);
    avec
    MAX_Q constante égale à 12
    MAX_MSG constante égale à 10
    sa une variable de type SECURITY_ATTRIBUTES
    MsgElemT une structure maison
    QUEUEMAP une constante contenant une chaine et réutilisée pour l'OpenFileMapping

    pour le iostream.h, étant donné que mes sources sont des .c et que je n'ai rien vu qui ressemble a une classe mais plutôt de la bonne vieille programmation procédurale, je me suis pas demandé une seconde si ce projet utilisait du c++ je me renseignerai...

    merci en tout cas pour les éclaircissements
    [/CODE]

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Il peut aussi y avoir des problème de compatibilité ascii / unicode. Il faut voir comment était configuré l'ancien IDE et le nouveau. (au passage quel était l'ancien IDE ?)

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Points : 2 739
    Points
    2 739
    Par défaut
    désolé pour le délai de réponse, j'ai passé un week end anticipé loin de toute technologie

    alors l'appli a été développée sous Visual Studio 6 et toujours compilé avec ce même IDE jusque maintenant.
    à l'époque, c'est sur que l'unicode ne devait pas être très fréquemment utilsé... ça me fait une autre piste à explorer avant de désesperer

Discussions similaires

  1. windows seven et windows server 2008
    Par ess2007 dans le forum Windows 7
    Réponses: 1
    Dernier message: 18/05/2012, 19h41
  2. Réponses: 1
    Dernier message: 20/05/2010, 17h01
  3. Réponses: 1
    Dernier message: 20/05/2010, 17h01
  4. Windows Server Vs Windows Server Small Business
    Par bakaneko dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 08/02/2008, 15h10
  5. Compatibilité Windows Server Enterprise / Windows Server Standard
    Par Greldinard dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 05/02/2008, 13h52

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