ho il seguente file C:tentativo di chiamata globale `print'(un valore nullo)
//thing.c
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <stdio.h>
lua_State* L;
int main(){
L = lua_open();
lua_dostring(L, "print(\"lua\")");
printf("hello\n");
return 0; }
e la seguente makefile:
default:
gcc -I/usr/include/lua50 -L/usr/lib -o qwerty thing.c -llua50 -llualib50
il codice costruisce bene, ma quando ho eseguirlo ottengo il seguente:
[string "print("lua")"]:1: attempt to call global `print' (a nil value)
hello
Nota: ho visto le molte altre domande su questo errore, ma tutti si occupano di lavorare direttamente a Lua, al contrario di C api. Sembrano anche implicare che il problema è che la funzione print
non è mai stata definita. Non lo capisco, dato che posso eseguire sia un interprete lua che uno script lua direttamente dalla riga di comando.
EDIT: Sto usando Lua 5,0
'thing.c :(testo + 0x20):. Undefined reference to 'luaL_openlibs'' Degno di nota: Sto usando Lua 5.0 – ewok
@ewok, vedere modifica . Tuttavia, poiché stai ricevendo un errore di collegamento (e non un errore del compilatore), penso che potresti includere l'intestazione 5.1 o 5.2, ma collegare la libreria 5.0. Vedo che stai specificando il percorso di inclusione 5.0, ma mi chiedo se hai le intestazioni 5.1 o 5.2 da qualche parte nel percorso di inclusione predefinito? –