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 :

Comment compiler un Programme C++


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut Comment compiler un Programme C++
    Bonjour,
    Je me présente rapidement, je suis étudiant en classe préparatoire et je voudrais utiliser un programme trouvé sur votre site : "Application d'un algorithme de colonie de fourmis au problème du voyageur de commerce" écrit par Khayyam90

    J'ai téléchargé les fichiers sources qui sont en lien sur la dite page,
    J'ai téléchargé Visual C++ 2010 et 2008,
    mais lorsque je clique sur "générer" un certain nombre de messages d'erreur apparaît.

    Habituellement je travaille en Caml, autant dire que c'est très différent.
    Voici un exemple (pour illustrer mon problème) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    let rec inserer a l = match l with 
    [] -> [a]
    |t::q  -> if t>a then a::l
                else t :: (inserer a q) ;;
     
    let rec tri_par_insertion l = match l with 
    [] -> []
    |t::q  -> inserer t (tri_par_insertion q) ;;
     
    let l1=[3;5;2;8;6;4] ;;
    tri_par_insertion l1 ;;
    Et la console Caml me renvoit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >       Caml Light version 0.74
     
    #load "C:/CamlLight/Prog/Pointdedistri.ml";;
    inserer : 'a -> 'a list -> 'a list = <fun>
    tri_par_insertion : 'a list -> 'a list = <fun>
    l1 : int list = [3; 5; 2; 8; 6; 4]
    - : int list = [2; 3; 4; 5; 6; 8]
    - : unit = ()
    #
    Ce que je souhaiterais comprendre, c'est comment faire compiler le programme de colonie de fourmis, où mettre les valeurs (villes, nombre de fourmis, phéromones etc) et comment lancer le programme. Ce que je fais en Caml en créant la liste l1 puis en lançant tri_par_insertion l1.

    J'ai compris dans les grandes lignes l'algorithme, mais par exemple sur un des diagrammes en conclusion, il y a "Ecart à l'optimum" en ordonnée, mais qu'est-ce que l'optimum ? J'aimerais comprendre ces finesses en pouvant lancer le programme par moi même mais je n'y arrive pas, et les tutoriels ne répondent pas vraiment à cette question.

    Merci pour votre aide.

  2. #2
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut
    Salut,

    En ce qui me concerne, j'utilise Visual C++ Express ( c'est la version gratuite de mocrosoft ). Tu trouvera un tuto pour l'installer et faire un petit projet Installation et configuration de Visual C++ : Premiers pas avec Visual C++ Express Edition 2008 de Microsoft

    Mais tu peux aussi consulter : Bien débuter en C++ et/ou aussi Les meilleurs Cours et Tutoriels C++

  3. #3
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Citation Envoyé par Lehciem Voir le message
    mais lorsque je clique sur "générer" un certain nombre de messages d'erreur apparaît.
    Il faut nous dire lesquelles.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut
    J'ai essayé sous Visual C++ 2008.

    Voici une capture d'écran :


    Le code de l'algorithme est celui de la page de Khayyam90

    Et le message d'erreur :

    1>------ Début de la génération*: Projet*: Fourmis, Configuration*: Debug Win32 ------
    1>Compilation en cours...
    1>cl*: Ligne de commande warning D9035*: l'option 'Wp64' est désapprouvée et sera supprimée dans une version ultérieure
    1>ant.cpp
    1>ant_system.cpp
    1>main.cpp
    1>c:\users\inno\desktop\fourmis\main.cpp(16) : warning C4305: 'argument'*: troncation de 'double' à 'float'
    1>problem.cpp
    1>Génération de code en cours...
    1>Compilation du manifeste en ressources en cours...
    1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
    1>Copyright (C) Microsoft Corporation. All rights reserved.
    1>Édition des liens en cours...
    1>MSVCRTD.lib(crtexew.obj) : error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup
    1>Debug\Fourmis.exe : fatal error LNK1120: 1 externes non résolus
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Inno\Desktop\Fourmis\Debug\BuildLog.htm"
    1>Fourmis - 2 erreur(s), 2 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

    Autant dire que je n'y comprends rien.

  5. #5
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut
    Salut,

    La ligne importante ici est
    1>MSVCRTD.lib(crtexew.obj) : error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup
    Généralement c'est qu'il manque un #include, que tu utilise une variable ou une fonction dans un fichier alors qu'elle est déclarée dans un autre ( la compilation se passe bien mais le linkage plante )

    EDIT : J'ai eu le même pb en compilant! Le pb semblait venir du main.
    En cherchant d’où pouvait venir le pb j'ai d'abord recompilé avec une fonction main vide, puis je recompile en ajoutant une lignes de plus à chaques fois jusqu'a retrouver l'origine du problème...A la fin, en recompilant avec la fonction main d'origine ça a marché ( plus moyen de reproduire l'erreur!! ) Ca peut venir de l'ordre dans lequel on déclare les include ( à confirmer, je ne suis pas certain de mon diagnostique Si quelqu'un a un avis plus éclairé... n'hésitez pas )

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Sous windows, il existe deux types d'applications : Les applications fenêtrées, et les applications console. Les applications console correspondent aux applications les plus classiques en C++, et le point d'entrée correspondant est main.

    Les applications fenêtrées ont, elles, un point d'entrée WinMain. Le message d'erreur indique qu'il ne trouve pas WinMain, c'est donc que ton projet essaye de générer une application fenêtrée

    L'application que tu tentes de compiler est écrite en C++ standard. Il faut donc que tu crées un nouveau projet que tu choisisse en mode console.

    Le plus simple, c'est Fichier/Nouveau/Projet/Application console Win32, ensuite tu choisi les options exécutable et projet vide, et là, tu peux partir sur de bonnes bases.

    Tu peux aussi retoucher le projet existant, mais c'est un peu plus compliqué, et tu commences à mettre le doigt dans l'engrenage des centaines d'options de projet. Click droit sur le projet/Propriétés/Propriétés de configuration/Editeur de liens/Système/Sous-système et tu passes de Windows à Console.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Réponses: 11
    Dernier message: 16/09/2011, 07h16
  2. comment compiler un programme haskell?
    Par phobos21 dans le forum Haskell
    Réponses: 2
    Dernier message: 03/01/2010, 20h20
  3. comment compiler un programme c sous linux?
    Par diengsallah dans le forum Linux
    Réponses: 11
    Dernier message: 13/09/2009, 08h57
  4. Réponses: 3
    Dernier message: 15/02/2008, 09h06
  5. [Outils][C#] Comment compiler un programme ?
    Par H-bil dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 06/04/2007, 12h18

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