Comme mentionné sbk, vous devez accéder à votre variable en tant que membre d'un userdata:
print(cside.myVar) -- 5
Voici quelques exemples de code pour le faire en utilisant l'API Lua. C'est simple, bien que fastidieux. Vous voulez, soit faire votre propre générateur de code ou d'utiliser quelque chose comme rasade ou tolua ++
/* gcc -o simple simple.c -llua -lm -ldl */
#include <stdio.h>
#include "lua.h"
#include "lauxlib.h"
int myVar = 5;
int l_set(lua_State *L)
{
const char *key = luaL_checkstring(L, 2);
int val = luaL_checkint(L, 3);
if (strcmp(key, "myVar") == 0)
myVar = val;
}
int l_get(lua_State *L)
{
const char *key = luaL_checkstring(L, 2);
if (strcmp(key, "myVar") == 0)
{
lua_pushinteger(L, myVar);
return 1;
}
}
int main(int argc, char *argv[])
{
const struct luaL_Reg somemt[] =
{
{ "__index", l_get },
{ "__newindex", l_set },
{ NULL, NULL }
};
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_newuserdata(L, sizeof(void *));
luaL_newmetatable(L, "somemt");
luaL_register(L, NULL, somemt);
lua_setmetatable(L, -2);
lua_setglobal(L, "cside");
luaL_dostring(L, "print('from Lua:', cside.myVar)");
luaL_dostring(L, "cside.myVar = 200");
printf("from C: myVar = %d\n", myVar);
}
que je cherchais vraiment de le faire avec l'API Lua plutôt que d'utiliser une bibliothèque, mais je vais lui donner un coup d'oeil. –