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 :

call lua overrided function from c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Par défaut call lua overrided function from c++
    yop,
    je bosse sur un système de script lua pour étendre les possibilités d'une appli.
    Donc j'ai wrappé une classe c++ en lua (a l'aide de table, métatable et userdata) pour pouvoir créer et utiliser un objet de ce type. Ca marche. Mais l'idée, c'est de pouvoir faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    frame1 = Frame.new("nom")
     
    function frame1:Draw()
        -- code de dessin
    end
    ensuite en c++ j'appelle frame1 : Draw lorsque j'ai besoin de dessiner la fenetre.
    Faudrait stocker la table lua quand je crée l'objet, ensuite quand j'appelle Draw en c++, ca appelle la fonction Draw de la table, si elle est overrided ca l'appelle, sinon ca revient a la méthode de base. Mais impossible de trouver comment stocker un pointeur de table lua en c++.

    Quelqu'un a une idée?
    (dsl si c'est pas la bonne partie du fofo mais je savais pas trop ou poster)

  2. #2
    Invité de passage
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Par défaut
    Luabind ?

    C++ classes in Lua
    Overloaded member functions
    ...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Par défaut
    plutot mourir.
    Je suis sur VS2010 et luabind est compilé avec une ancienne version, donc faut le recompiler, en plus il utilise des variadic templates, pas supporté par VS. J'ai déja perdu trop de temps à essayer de le faire marcher sans résultats.

  4. #4
    screetch
    Invité(e)
    Par défaut
    ah ben y'a plus que la magie alors. Bonne chance.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    cherche luna, c'est un wrapper lua<->C++ fonctionnel qui te fournit une classe de base dont il suffit d'hériter.
    Il te suffira d'écrire ton luamanager pour charger les classes ainsi créées
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Par défaut
    trés interressant ce luna ! je suis entrain de regarder, ca m'a l'air bien sympa merci.
    Par contre rien sur l'override de fonctions c++ en lua. Mais j'ai trouvé la solution : luaL_ref() ca conserve un pointeur vers un objet lua. ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int ptr = luaL_ref(L, LUA_REGISTRYINDEX);
     
    ...
     
    lua_rawgeti(L, LUA_REGISTRYINDEX, ptr);
    lua_getfield(L, -1, "nomdefonction");
    Autre question pendant que j'y suis, je crée un userdata auquel j'associe une metatable avec une fonction __gc dedans.
    Dans un script je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function test()
        local ud = myclass.new()    -- appel du constructeur, ca crée le userdata
        ud:testfunction()
    end    -- fin de la fonction, ud devrait etre détruit
    seulement voilà, l'appelle du __gc de ma classe n'est pas appellé a la fin de la fonction, mais quand je ferme la session Lua ( a la fin du programme quoi )
    quelqu'un sait pourquoi?

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

Discussions similaires

  1. call a C function from another function !
    Par Student_Master dans le forum C
    Réponses: 7
    Dernier message: 29/07/2011, 11h01
  2. Call to undefined function mysql_pconnect()
    Par shirya dans le forum Installation
    Réponses: 2
    Dernier message: 03/11/2005, 21h55

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