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

Windows Discussion :

Compiler un programme C avec VC++ 2008


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 19
    Points
    19
    Par défaut Compiler un programme C avec VC++ 2008
    Pour compiler un programme C en mode console, il faut passer par quelques détours. En effet, Visual C++ propose un squelette en C++, avec un premier fichier dont l'extension et .cpp.
    Renommer en .c par clic droit dans l'explorateur de solution ne suffit pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>cl*: Ligne de commande error D8045*: impossible de compiler le fichier*C '.\bin2hex-lc.c' avec l'option /clr
    Il faut modifier le projet par Alt-F7, Propriété de configuration -> Général et changer la dernière ligne
    "Pas de prise en charge du Common Language Runtime"; ensuite, il faut encore supprimer la précompilation par le paramètre C/C++ : "sans précompilation". Il faut encore aller à Avancé, et indiquer "Compiler comme code C (/TC)".

    Dans le projet, deux fichiers générés troublent encore la bonne marche du compilateur. Il faut exclure:
    - "stdafx.h"
    - "AssemblInfo.cpp"
    Pour qu'il ne considère plus ces fichiers.
    Et maintenent, ça compile! ...en mode "Debug". Pour la "Release", il faut aussi reprendre la configuration!

  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 518
    Points
    41 518
    Par défaut
    Le problème majeur, c'est que tu fais un projet CLR au lieu d'un projet Win32 natif.

    Enfin... J'espère que VC++2008 propose encore de faire des projets natifs...
    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
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Enfin... J'espère que VC++2008 propose encore de faire des projets natifs...
    Je confirme.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  4. #4
    Membre expérimenté
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 006
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 006
    Points : 1 741
    Points
    1 741
    Par défaut
    Ce thread tombe à pic.

    Je voulais tester Visual C++ pour faire du C classique.

    Citation Envoyé par ymasur Voir le message
    Dans le projet, deux fichiers générés troublent encore la bonne marche du compilateur. Il faut exclure:
    - "stdafx.h"
    - "AssemblInfo.cpp"
    Pour qu'il ne considère plus ces fichiers.
    Et maintenent, ça compile! ...en mode "Debug". Pour la "Release", il faut aussi reprendre la configuration!
    Je pense que tu fais Nouveaux projet => Application console CR

    Pourquoi ne pas avoir fait Nouveaux projet => Projet vide CLR ?
    Les autres fichiers ne servent à grand chose.



    J'ai suivi les recommandations que tu as donné
    Propriété de configuration => Général => Pas de prise en charge du Common Language Runtime
    Propriété de configuration => C/C++ => En tetes précompilés => Sans utiliser les en-têtes précompilés (à la premiere ligne) Est ce que c'est ce parametre dont tu parles ?
    Propriété de configuration => C/C++ => Avancé => Compiler comme code C (/TC) (2ème ligne)


    Ma question est :
    Pourquoi mon hello world n'affiche rien qui est la base de la base en compilant Alt + F7 (ou en executant F7) ?
    1>------ Début de la génération*: Projet*: e, Configuration*: Debug Win32 ------
    1>Compilation en cours...
    1>e.cpp
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\consultant\Mes documents\Visual Studio 2005\Projects\e\e\Debug\BuildLog.htm"
    1>e - 0 erreur(s), 0 avertissement(s)
    ========== Génération*: 1 a réussi, 0 a échoué, 0 mis à jour, 0 a été ignoré ==========



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h> 
    
    int main(void)
    {
        printf("Hello World");
        return 0;
    }

  5. #5
    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 518
    Points
    41 518
    Par défaut
    Et moi, j'ai une question aussi:
    Pourquoi partir d'un projet CLR et le retransformer en projet natif plutôt que de créer directement un projet natif vide?
    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.

  6. #6
    Membre à l'essai
    Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 19
    Points
    19
    Par défaut
    La même remarque est apparue plusieurs fois:
    Citation Envoyé par Médinoc Voir le message
    Et moi, j'ai une question aussi:
    Pourquoi partir d'un projet CLR et le retransformer en projet natif plutôt que de créer directement un projet natif vide?
    C'est effectivement et probablement la meilleure technique. Au départ, c'était un exercice en C++ pensé pour mes apprentis; j'ai voulu explorer ensuite la solution en C, en C# et en C# mode Windows. Pour travailler le code, j'ai simplement recopier le projet, et contourné les switches et options du compilateur.
    Pour voir le texte complet et les résultats, suivez ce lien:
    http://yves.masur.microclub.ch/artic...s-C-CPP-CS.doc
    Ou: http://yves.masur.microclub.ch/, Articles, CPP et choisir quatre_codages_C-CPP-CS.doc

  7. #7
    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 518
    Points
    41 518
    Par défaut
    Hé, attention! Si j'en crois le problème qui s'affiche quand tu crées un projet C à partir du projet C++, ça veut dire que le projet C++ est toujours un projet CLR!
    Il ressemble peut-être à un projet C++ natif, mais tant que tu n'as pas désactivé l'option /clr (ou directement créé un projet natif), il tournera dans le CLR et utilisera la version managée de la bibliothèque runtime C++...

    PS: Pourquoi utiliser la fonction sale Environment.Exit(1) dans la version C# au lieu de retourner proprement 1 ?
    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.

  8. #8
    Membre à l'essai
    Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Hé, attention! Si j'en crois le problème qui s'affiche quand tu crées un projet C à partir du projet C++, ça veut dire que le projet C++ est toujours un projet CLR!
    Il ressemble peut-être à un projet C++ natif, mais tant que tu n'as pas désactivé l'option /clr (ou directement créé un projet natif), il tournera dans le CLR et utilisera la version managée de la bibliothèque runtime C++...
    Tout a fait. Mais est-ce grave? Après tout, c'est ce que propose MS par défaut. Donc je suppose que c'est la voie à suivre pour s'éviter des problèmes de compatibilité futurs avec Windows. L'écriture du code ne change - a priori - pas.

    Citation Envoyé par Médinoc Voir le message
    PS: Pourquoi utiliser la fonction sale Environment.Exit(1) dans la version C# au lieu de retourner proprement 1 ?
    La aussi, je me suis laissé guider par (je ne me rappelle plus la démarche exacte) le help, probablement. Et je n'ai vu nulle mention comme quoi cette sortie était non appropriée. Merci pour la remarque!

  9. #9
    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 518
    Points
    41 518
    Par défaut
    Disons que Environment.Exit() est à peut près aussi inapproprié qu'un exit() en C ou C++...
    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.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2010, 17h01
  2. Est-il possible de créer un programme VB6 avec VS 2008 ?
    Par beegees dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 20/06/2008, 20h41
  3. compiler un programme TC avec code::blocks ou un autre compilateur
    Par acacia dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 24/01/2008, 19h07
  4. Compiler un programme avec API Glut
    Par Haage dans le forum GLUT
    Réponses: 5
    Dernier message: 21/07/2007, 12h42
  5. Compiler un programme avec winapi.h
    Par mannostab dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2006, 23h06

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