Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1545 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [Lua] Utiliser Lua dans du C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Lua] Utiliser Lua dans du C

n°1644283
rc_jk78
Posté le 16-11-2007 à 23:05:12  profilanswer
 

Salut à tous !
 
Je cherche à utiliser LUA dans du C. Le seul hic, c'est que j'ai des notions de C, mais la programmation de microcontroleurs est bien différente de la programmation pour application: dans le sens où je suis perdus avec ces IDE, avec ces compilateurs...
 
Bon, mon idée, c'est de suivre suivre ce tuto : http://mdeverdelhan.developpez.com [...] tutoriel1/ mais, je me retrouve bloqué à la fin du II.
 
Je n'arrive pas à compiler, pourtant, j'ai bien linké les librairies:

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "lua\lua.h"
  4. #include "lua\lualib.h"
  5. #include "lua\lauxlib.h"
  6. int main(int argc, char *argv[])
  7. {
  8.     lua_State * state;
  9.     // on créer un contexte d'exécution de Lua
  10.     state = lua_open();
  11.     // on charge les bibliothèques standards de Lua
  12.     luaL_openlibs(state);
  13.     // on lance le script lua
  14.     if (luaL_dofile(state,"script.lua" )!=0)
  15.     {
  16.         // il y a eu une erreur dans le script
  17.         fprintf(stderr,"%s\n",lua_tostring(state,-1));
  18.         exit(0);
  19.     }
  20.     system("PAUSE" );
  21.     return 0;
  22.     // Fin de la fonction
  23. }


 
MAis bon, impossible à compiler, ni même éxécuter ce code de base :/
 
Merci de votre aide! :D

mood
Publicité
Posté le 16-11-2007 à 23:05:12  profilanswer
 

n°1644355
Ace17
Posté le 17-11-2007 à 11:23:21  profilanswer
 

Et si tu nous donnais le message d'erreur de ton compilo?

n°1644450
rc_jk78
Posté le 17-11-2007 à 14:57:38  profilanswer
 

Oui, trés juste, j'ai oublié l'essentiel ... XD
 

Code :
  1. Project   : Console application
  2. Compiler  : GNU GCC Compiler (called directly)
  3. Directory : D:\Le C\lua 01\
  4. --------------------------------------------------------------------------------
  5. Switching to target: default
  6. Linking console executable: D:\Documents de Robin\Le C\lua 01\Test_Lua.exe
  7. .objs\main.o:main.c:(.text+0x2b): undefined reference to `luaL_newstate'
  8. .objs\main.o:main.c:(.text+0x39): undefined reference to `luaL_openlibs'
  9. .objs\main.o:main.c:(.text+0x4c): undefined reference to `luaL_loadfile'
  10. .objs\main.o:main.c:(.text+0x73): undefined reference to `lua_pcall'
  11. .objs\main.o:main.c:(.text+0x94): undefined reference to `lua_tolstring'
  12. collect2: ld returned 1 exit status
  13. Process terminated with status 1 (0 minutes, 2 seconds)
  14. 0 errors, 0 warnings

Message cité 1 fois
Message édité par rc_jk78 le 17-11-2007 à 14:58:32
n°1644453
Ace17
Posté le 17-11-2007 à 15:05:42  profilanswer
 

rc_jk78 a écrit :

Je n'arrive pas à compiler, pourtant, j'ai bien linké les librairies:

Pourtant le message d'erreur dit justement que le linker n'a pas pas reussi a trouver les fonctions lua, comme si tu avais oublie de lui preciser de linker avec la lib lua. Quel environnement utilises-tu, et comment as-tu installe la lib lua ?

n°1644465
rc_jk78
Posté le 17-11-2007 à 15:26:22  profilanswer
 

J'utilise CodeBlock.
 
Ce que j'ai fait, j'ai chopé les sources sur lua.org, puis j'ai placé tous les .cet .h dans un sous dossier 'lua' de mon projet. Et je link vers les 4 headers, comme indiqué ds le readme:
#include "lua\lua.h"
#include "lua\lualib.h"
#include "lua\lauxlib.h"
 
Apres, je ne sais pas trop ce que ca devrait donner...

n°1644471
Elmoricq
Modérateur
Posté le 17-11-2007 à 15:36:28  profilanswer
 

Tu as dû oublier d'inclure la bibliothèque au linker.
 
C'est une option -l<le nom de la bibliothèque LUA à inclure> à ajouter dans les options du compilateur.

n°1647629
rc_jk78
Posté le 22-11-2007 à 20:37:36  profilanswer
 

dsl, j'ai pas eu l'occaz de retoucher à lua cette semaine... je verrais peut etre ce we ;)
 
merci en tout cas :D

n°1647642
Ace17
Posté le 22-11-2007 à 21:06:15  profilanswer
 

rc_jk78 a écrit :

Et je link vers les 4 headers

On ne "link" pas vers des headers.  
Ton probleme vient probablement de ta confusion entre la phase d'edition de liens et celle de compilation.  
 
Si je simplifie :
fichier C avec inclusions de .h ------ preprocessing ------> code C ------- compilation -----> fichier .o -------- edition de liens (link) ------> fichier executable
 
Une librairie de developpement, sous sa forme binaire, se compose generalement d'un ou plusieurs fichiers .h a inclure dans un fichier C, et d'un fichier .a, qui contient le code executable de la librairie.
 
Au preprocessing, tout se passe comme si le contenu de fichier.h etait copie-colle a l'endroit ou tu fais #include "fichier.h".  
A la compilation, la librairie n'intervient pas.
A l'edition de lien, il faut que tu precises au linker ou il doit aller chercher le code des fonctions de ta librairie. Ce code se trouve donc dans ton .a (ou .lib sous certains compilateurs), et si ton fichier est, par exemple libMachin.a, il faut le placer dans le repertoire "lib" de ton compilateur et rajouter a ta ligne de commande -lMachin, comme l'a precise Elmoricq.
 

n°1647822
breizhbugs
Posté le 23-11-2007 à 11:22:35  profilanswer
 

rc_jk78 a écrit :

Oui, trés juste, j'ai oublié l'essentiel ... XD
 

Code :
  1. Directory : D:\Le C\lua 01\
  2. Linking console executable: D:\Documents de Robin\Le C\lua 01\Test_Lua.exe



Ca fait bizarre de mettre l'executable dans un repertoire aussi different de celui ou tu code? tu ne t'es pas trompé dans les chemins?

n°1651835
Sire Jeans
R.I.P Chris :'(
Posté le 02-12-2007 à 16:50:28  profilanswer
 

Problème résolu rc_jk78 ?
 
Parce que vu ce que tu décris c'est simplement un oublie de ta part lorsque tu as spécifié au linker le chemin vers la lib Lua (Lua.1.5.a je crois pour Code::Block) comme l'a dit Elmoricq et l'a très bien expliqué Ace17 :). Ou alors ça vient d'autre part...
 
Et justement, j'ai eu pour ma part un problème similaire intervenant à l'édition des liens mais sous Visual Studio. J'ai pourtant bien préciser le chemin vers la lib Lua et pourtant le linker refusait de lier les fichiers en me mettant des "undefined Reference" comme toi. L'erreur venait en fait du header inclus : il ne fallait pas mettre lua.h, lualib.h et lauxlib.h mais seulement lua.hpp qui contient déjà les headers cité mais correctement défini pour être compilé avec un compilateur C++.
Tu utilises GCC ce qui devrait normalement te faire compiler en C et donc ne pas avoir la même erreur que moi. Mais si malgrès tout ça ne marche toujours pas, tu peux essayer en mettant lua.hpp et voir ce que ça donne. Au pire t'as une erreur de compilation et tu sera sûr que le problème vient bien de la définition des library à utiliser dans ton projet.
 
 :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [Lua] Utiliser Lua dans du C

 

Sujets relatifs
quel sgbd utiliser?Quelle techno. utiliser pour dév. page web avec onglets
[Resolu]wxWidgets : forcer un objet à utiliser la taille du plus grandQuel script utiliser...
dojotoolkit : comment utiliser EDITOR pour recevoir les données en PHPutiliser inttostr
Fonction à utiliser dans une chaîne de caractère dans Access[Résolu] utiliser une table tempo pour lire un fichier .xls
[Résolu] Utiliser indexing service[JSF - Myfaces] Utiliser un actionlistener avec un commandLink
Plus de sujets relatifs à : [Lua] Utiliser Lua dans du C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR