C++中如何使用Lua

         最近,在学习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方法了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值