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 :

Méthode d'interfaçage C++ / Lua


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut Méthode d'interfaçage C++ / Lua
    Bonjour, dans le cadre de mon projet de recherche, j'ai développé une application faisant certains calculs. Suivant les cas, les exemples que je veux calculer, je dois instancier ou non certains objets, les initialiser avec différentes valeurs, etc. En gros, d'une exécution sur l'autre, les calculs doivent être différents. Sauf que voilà, le projet devient assez gros pour que tout recompiler à chaque fois devienne non négligeable.
    Justement, il se trouve que j'ai entendu parler des langages de script. Intéressant, de pouvoir changer le comportement du programme sans tout recompiler. Et, a priori, Lua me semblait être ce qu'il me fallait. Sauf que voilà, c'est un langage interprété, c'est donc a priori plus lent, et je ne peux pas me permettre la lenteur, les calculs sont importants.

    Donc voilà mon interrogation :

    - On peut appeler des fonctions Lua depuis C++ ;
    - On peut appeler des fonctions C++ depuis Lua ;
    Moi, ce dont j'aurais besoin, ce serait de créer un script de création des différents objets C++ dont j'ai besoin et d'appeler les méthodes appropriées. Alors que faut-il faire ?
    - Faut-il créer un script Lua qui exécute des bouts de programme C++ ?
    - Faut-il créer un petit programme qui se charge d'interpréter le script Lua, qui lui-même instancie des objets ?

    Et surtout, ce qui m'intéresse, c'est les temps d'exécution. Aujourd'hui mon programme tourne bien. Donc a priori les scripts Lua rallongeraient un peu ; lorsqu'on crée un objet C++ depuis Lua ou qu'on appelle une fonction C/C++, le temps d'exécution de la fonction est bien le même que celui de départ ? L'augmentation de temps d'exécution est-elle uniquement liée à l'interprétation de la commande Lua (sachant qu'après tout est exécuté en C++) ?

    Merci d'avance, je cherche un moyen de faire en sorte que le temps d'exécution additionnel ne soit proportionnel qu'au nombre d'appels & de créations d'objets, et non à la complexité du programme.

    Le Barde.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si tu laisses tout le code critique côté C++ et ne fais que le strict minimum côté Lua, tu ne payeras effectivement que le coût de l'interprétation des commandes Lua en plus.

  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
    Récemment j'ai vu passer sur le forum un lien vers swig. Cela permet de faire automatiquement le binding C++->script. Au vu des tutoriaux, cela a l'air assez simple au premier abord.

    HIH

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    SWIG n'est pas exactement le bon outil pour interfacer C++ et Lua, il sert plutôt à créer un binding d'une bibliothèque C++.

    Pour utiliser Lua dans un programme codé en C++, il faut utiliser des bibliothèques du genre ToLua ou luabind.

  5. #5
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    D'accord, merci, vous me rassurez grandement

    Donc, si j'ai bien compris la leçon...
    1. On crée un certain nombre de fonctions en C++ d'interfaçage avec Lua ;
    2. On fait appel dans le programme principal (ou ailleurs ^^) à une fonction Lua, contenue dans un script Lua ;
    3. Dans ladite fonction écrite en Lua, qui sert de "fonction principale", on peut faire appel à ces fonctions d'interface écrites en C++ ?

  6. #6
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 26
    Par défaut
    J'ai regardé un peu luabind, et oui il te permet de faire ce genre de chose. Tu peux aussi faire si je me trompe pas une bibliotheque qui exporte tes fonctions C++ pour quelles soit utilisable en LUA, donc tu peux par exemple faire ton script principale en LUA et quand tu as besoin de perf tu utilises les fonctions de ta bibliotheque.

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

Discussions similaires

  1. Le principe de méthode interfaçage
    Par guinda dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 29/09/2013, 23h24
  2. Méthode d'interfaçage entre Matlab et Java
    Par msassoum dans le forum Général Java
    Réponses: 2
    Dernier message: 07/02/2010, 09h26
  3. Redéfinition de méthode C# avec Lua
    Par fseg_ dans le forum C#
    Réponses: 0
    Dernier message: 31/08/2009, 16h40
  4. Interfaçage Lua Lunar C++
    Par GoldenEye dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 21/10/2008, 22h29
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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