最开始学习lua嵌入c的时候,一般会写下这样的一个小程序来执行一个脚本文件:
代码: { // Open lua state lua_State* L = lua_open(); luaopen_base( L ); // Load script file luaL_loadfile( L, "Script.lua" ); lua_resume( L, 0 ); // Call foobar lua_getglobal( L, "foobar" ); lua_pushnumber( L, 211 ); if( lua_resume( L, 1 ) ) printf( "%s/n", lua_tostring( L, 1 ) ); // Close it lua_close( L ); return 0; } 对应的lua脚本可能是这样 代码: function foobar() print( "foobar!" ) end
假如有种设计为一个脚本文件对应一个函数,那么我肯定在想输出一个简单的字符串如"foobar!"时不想还去输入function foobar()这段字(或者说我想让脚本编写者可以直接就写一段脚本就可以被执行) 代码: print("foobar!")
代码: lua_pushstring( L, "foobar" ); luaL_loadfile( L, "Script.lua" ); lua_rawset( L, LUA_GLOBALSINDEX ); // 一般情况下,lua_settable也可 // Call foobar lua_getglobal( L, "foobar" ); if( lua_resume( L, 0 ) ) printf( "%s/n", lua_tostring( L, 1 ) );
|
|