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 :

Programme C++ de console pour Lua


Sujet :

C++

  1. #1
    Membre habitué

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 183
    Points
    183
    Par défaut Programme C++ de console pour Lua
    Salut à tous,

    je débute en Lua sous Windows pour l'embarquer dans du C++ et j'ai des questions, si des bonnes âmes pouvaient m'aider :

    1)
    D'abord qu'elle est la différence entre luaxxx.exe et luacxxx.exe (xxx=numéro de version) ? Les deux semblent pouvoir lire depuis stdin ou un fichiers des instructions (je m'attendais à une console interactive et un interpréteur, à la ruby/irb).

    2)
    J'ai fait un programme de console en C++ pour Lua qu'il lise une chaîne, puis la met dans un buffer et finalement l'exécute, voici le noyau du truc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    lua_State * lua = lua_open();
    luaL_openlibs(lua);
    std::string s;
    std::getline(cin, s);
    const char * buff = s.c_str();
    int error_load = luaL_loadbuffer(lua, buff, sizeof(buff), "dbg1"); // Chargement
    int error_exec = lua_pcall(lua, 0, 0, 0); // Exécution
    Si je tape dans ma console:
    Pas de problème, a est bien stocké dans les variables globales de Lua avec la valeur 2. Mais comment stocker une chaîne ?
    En effet, le code suivant:
    me donnent à chaque fois : "attempt to call a string value". Il ne comprend pas que les guillements sont les délimiteurs de chaîne ? Y'a un truc à la strip_quote à faire ? Pourtant en utilisant lua.exe tout se passe bien.

    Merci d'avance.

  2. #2
    Membre habitué

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 183
    Points
    183
    Par défaut
    OK j'ai résolu mon problème après recherche sur le Net et en testant avec VC. Je marque le sujet résolu, mais j'écris la soluce, dans le cas improbable où quelqu'un rencontrerait le même problème que moi :

    Le problème vient du fait que luaL_loadbuffer attend un buffer fini par \n\0 (tout du moins cela marche dans cette configuration). Pour éviter de manipuler "à la main" notre buffer, on preferra la fonction luaL_dostring qui elle se tape de la fin tant que la cstring est bien formée (c'est à dire terminée par '\0') et en plus fait le pcall derrière.

    Après pour lua/luac : luac est un compilateur qui transforme le code lua en bytecode alors que lua lui est juste un interpréteur.

    En espérant que cela puisse aider quelqu'un !

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

Discussions similaires

  1. Nouvelle console pour un programme Java
    Par arcane86 dans le forum Général Java
    Réponses: 6
    Dernier message: 06/10/2011, 16h49
  2. Réponses: 4
    Dernier message: 10/04/2006, 08h28
  3. Commande Console pour decompresser (Windows)
    Par pzawa dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/01/2006, 16h02
  4. [TP7] Renvoyer des infos dans la console pour redirection
    Par Natopsi dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 05/11/2005, 18h21
  5. Problème avec un programme éxécuter en console
    Par bzhrobby dans le forum Windows
    Réponses: 2
    Dernier message: 25/04/2005, 10h42

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