Как уже упоминалось СБК, вы бы получить доступ к переменной в качестве члена UserData:
print(cside.myVar) -- 5
Вот некоторые примеры кода, чтобы сделать это с помощью API Lua. Его простой, хотя и утомительный. Вы либо хотите сделать свой собственный генератор кода, или используя что-то вроде глотка или 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);
}
Я действительно сделать это с API Lua, а не с использованием библиотеки, но я дам ему вид. –