下面是一些示例代码,做了两两件事:
- 加载从同一目录下的文件“test.lua”。
- 尝试调用函数
iLoveVodka()
,如果可以找到。
您应该能够建立这种很轻松地:
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
lua_State *l = luaL_newstate();
luaL_openlibs (l);
int error = luaL_dofile (l, "test.lua");
if (error)
{
printf("Error loading test.lua: %s\n",luaL_checkstring (l, -1));
exit(1);
}
/**
* Get the function and call it
*/
lua_getglobal(l, "iLoveVodka");
if (lua_isnil(l,-1))
{
printf("Failed to find global function iLoveVodka\n");
exit(1);
}
lua_pcall(l,0,0,0);
/**
* Cleanup.
*/
lua_close (l);
return 0;
}
这可以被编译如下:
gcc -O -o test `pkg-config --libs --cflags lua5.1` test.c
只要定义里面test.lua
您iLoveVodka()
功能,你应该确定。
将它推入堆栈,然后调用'lua_pcall' – Appleshell
@Appleshell我必须使用哪个函数将它推入堆栈? – VIRUS
如果它是一个全局函数,则可以使用'lua_getglobal(state,“iLoveVodka”);'或者将其名称放在堆栈上并调用'lua_getfield'。 (不要害怕探索http://www.lua.org/manual/5.1/#index) – Appleshell