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

SL & STL C++ Discussion :

Appeler python depuis c++


Sujet :

SL & STL C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut Appeler python depuis c++
    Salut,
    J'ai une fonction python avec des paramètres et qui retourne une valeur. voici à quoi ressemble cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    def maFonction(a, b, c):
       return (2a - b + 5c)
    J'aimerai appeler cette fonction depuis mon code C++, lui passer les paramètres a, b et c et obtenir la valeur de retour.

    Merci à vous !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Regarde dans la section Python suivante :
    http://www.developpez.net/forums/f11...acage-langage/

    Il y a pas mal d'exemples/explications .

  3. #3
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Tu as tout ce que tu veux avec boost.python. Ca doit ressembler à ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    //recupere le module principal
    boost::python::object main_module = boost::python::import("__main__");
    main_namespace = main_module.attr("__dict__");
     
    //declare la fonction
    PyRun_SimpleString("def mafonction(a,b,c):"
    " return a+b+c");
     
    //declare tes variables et les ajoute dans le module principal
    int a=1, b=2, c=3;
    main_namespace["a"] = boost::python::object(a);
    main_namespace["b"] = boost::python::object(b);
    main_namespace["c"] = boost::python::object(c);
     
    //execute la fonction
    PyRun_SimpleString("res = mafonction(a,b,c)");
     
    //recupere le resultat
    int & res= boost::python::extract<int&>(main_namespace["res"]);

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Merci pour vos réponses ! Ca me place sur la bonne voie.

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

Discussions similaires

  1. [Python/FORTRAN(f2py)] Appeler fonction Python depuis Fortran
    Par squallmrs dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 21/06/2012, 11h53
  2. Appel de python depuis excel
    Par Bayard dans le forum Général Python
    Réponses: 2
    Dernier message: 11/09/2010, 17h07
  3. Appel script python depuis du C++
    Par OliveK dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 17/12/2008, 21h22
  4. [Python API] Appeller une fonction Python depuis le C++
    Par wetneb dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 18/10/2007, 12h49
  5. Appels DCOM depuis une application Unix
    Par Dinaïz dans le forum Windows
    Réponses: 1
    Dernier message: 26/08/2005, 13h53

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