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 :

Rendre un programme exécutable depuis la console


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingenieur meca
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingenieur meca
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 5
    Points
    5
    Par défaut Rendre un programme exécutable depuis la console
    Bonjour,

    je travaille sur un programme en c++/cli que je souhaite rendre scriptable (executable depuis la console windows).

    Pour l’instant le programme est utilisable via une interface graphique, je souhaite le rentre utilisable via la console windows.
    non seulement l'ouvrir, mais aussi lancer des fonctions.

    Par exemple pour voir lancer une commande batch " monprogramme ouvrirmodel("chemin d’accès") " pour lancer le programme et charger un modèle

    j'ai du mal à trouver de la documentation
    je pense que je n'utilise pas les bon mots clés dans mes recherches...

    Auriez vous des tutoriels ou articles à me conseiller.

    Merci d'avance

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    c'est étrange comme problème. Tout programme est appelable en ligne de commande
    (cd dans le dossier le contenant, puis programme.exe)

    Surtout quand il définit la fonction int main(int argc, char **argv), c'est à dire main avec les arguments de ligne de commande.
    argc donne le nombre d'argument.
    argv contient ceux-ci.
    Tu sais d'avance que argc >=1, que argv[0] est le nom du programme compilé (généralement le "programme.exe", mais parfois le chemin complet), et que argv[argc] == NULL;

    De la, il y a certainement moyen de faire ce que tu veux.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Je pense que c'est un problème simple , du moins si toutes tes fonctionnalités IHM sont accessibles à la ligne de commande (par exemple, choisir un dossier ou un fichier pour une action va ouvrir une boîte modale et à la console c'est gênant)

    Il faut faire un socle en C++, et chaque fonctionnalité doit être accessible à la ligne de commande, via une bascule: programme.exe -action1, programme.exe -action2 param1 param2, ....

    Ensuite:
    1. l'IHM consistera à brancher les fonctionnalités. Éventuellement, y intégrer les fonctionnalités non accessibles à la console
    2. Avoir une bascule: GUI (programme.exe -GUI) pour afficher l'IHM


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int main(/* ... */) {
    // Initialize the engine
        Engine e(/* ... */);
     
        if (switch(-GUI) is set) {
            IHM windows(e);
            windows.launch();
        } else {
            e.launch();
        }
     
        return 0;
    }
    Édit: Après c'est une question de conception
    • Soit tu passes via la méthode launch l'action et les paramètres si nécessaire (ou les actions via un tableau ou en passant intégralement argv) (et donc sûrement un switch/ case à l'intérieur de cette méthode)
    • Soit tu as une méthode pour chaque action: e.action1(), e.action2(param1, param2). Et donc le switch/ case se retrouve dans le main

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingenieur meca
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingenieur meca
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    En effet le problème était beaucoup plus simple que je ne le pensais

    il me suffisait de taper des arguments après la commande momprogramme.exe et le les récupérer dans ma fonction main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main(array<System::String ^> ^args)
    {
    }

    merci pour votre aide

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Ca, c'est du CLI, il aurait mieux valu utiliser le forum dédié
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2014, 14h39
  2. [Free Pascal] Rendre un programme exécutable avec un setup
    Par BISMARCK 007 dans le forum Free Pascal
    Réponses: 5
    Dernier message: 19/05/2013, 15h04
  3. Réponses: 1
    Dernier message: 08/04/2011, 12h22
  4. Exécuter un programme Fortran depuis VBA ?
    Par zerbault dans le forum Fortran
    Réponses: 1
    Dernier message: 08/01/2007, 09h58
  5. Lancer un programme c depuis java dans une console
    Par moise44 dans le forum Général Java
    Réponses: 5
    Dernier message: 04/04/2006, 20h04

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