Calling Lua function from c++ is very simple. Value passing between c++ and Lua goes through stack, Lua C API provides a convenience ways for you to call Lua function from C. To call Lua function, you need to specify:
1. Function Name. 2. Parameters of function call. 3. Return values expected ( Lua function support multiple results reture)
Let say my lua function name call f in last.lua, takes 2 parameters.
-- last.lua
function f (x, y)
return (x^2 * math.sin(y))/(1 - x)
end
printf("error running function `f': %s/n",lua_tostring(L, -1));
30
return-1;
31
}
32
33
/* retrieve result */
34
if(!lua_isnumber(L, -1)) {
35
printf("function `f' must return a number/n");
36
return-1;
37
}
38
z = lua_tonumber(L, -1);
39
printf("Result: %f/n",z);
40
lua_pop(L, 1);
41
lua_close(L);
42
43
return0;
44
}
Compile it with g++ like this:
g++ -o last{,.cc} -llua -ldl
The results:
Result: -12.158958
Brief explanation of the C++ codes above: First, I trigger lua_getglobal to get the function name, then I push 2 parameters to stack. I make lua_pcall by telling Lua I have 2 params and expect 1 value return. Upon success, I retrieve the return value from the top of the stack.
<br /><br />Calling Lua function from c++ is very simple. Value passing between c++ and Lua goes through stack, Lua C API provides a convenience ways for you to call Lua function from C. To call Lua function, you need to specify:<br />1. Function Name.<br