最近,在学习lua,写了个HelloWorld,希望对大家有帮助!
lua的源代码:http://www.lua.org/,之后,将源代码添加到工程中,我用的XCode,直接将源码拖到项目中就ok了。
---------------------------------------------------------------------------------------------------
/*
* 导入头文件,因为lua是在C编译器下的,所以,加上extern "C"标识符,告诉编译器用C编译器编译
*/
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
/*全局变量,用来记录Lua库运行时所需要的信息,所以Lua函数库中的函数参数都带有这个变量*/
lua_State *lua_s;
/*
* 一些函数原型
*/
int open(lua_State* L);
int luaopen_hello( lua_State* L );
int openLuaLib();
void callLuaString(const char *luaStr );
int openLuaLib()
{
if (lua_s != NULL) {
lua_close(lua_s);
lua_s = NULL;
}
lua_s = lua_open ();
if(lua_s !=NULL) {
luaL_openlibs(lua_s); //1.打开库
luaopen_hello(lua_s); //2.注册
lua_gc(lua_s,LUA_GCRESTART,0);
return 1;
}
return 0;
}
/*注册到Lua中的函数*/
extern "C" int open(lua_State* L){
printf("------>> Hello World <<--------\n");
return 0;
}
/*要注册的函数名称,存的是对应函数的地址*/
struct luaL_reg lrLibs[] =
{
{ "open", open },
{ NULL, NULL } /* sentinel */
};
extern "C" int luaopen_hello( lua_State* L )
{
/*将要注册的函数注册到Lua库的表中*/
luaL_register( L, "window", lrLibs );
return 1;
}
void callLuaString(constchar *luaStr )
{
/*1.打开Lua库*/
if(openLuaLib())
/*2.加载Lua脚本语言*/
luaL_loadbuffer(lua_s, luaStr,strlen(luaStr),"string");
/*3.调用*/
int result = lua_pcall(lua_s,0,0, 0);
if (result) {
}
}
------------------------------------ 调用 -------------------------------
callLuaString("window:open(\"hello world\",\"hi\",\"\");");
这样就会调用注册到window键值上的open方法了。