C语言调用Lua脚本

1.C语言调用Lua脚本。
C语言中调用Lua脚本的最开始的步骤是一样的,都是打开一个类似于*File的文件描述符之类的东西。
具体是这样的:
lua_State*L=lua_open();
然后加载运行库:
根据Lua版本的不同有以下几种形式:
luaL_openlibs(L);
或者
lua_baselibopen(L);
或者是
luaopen_base(L);//Lua5.0中的用法 luaopen_string(L);
luaopen_io(L);
luaopen_math(L);

a.加载Lua脚本文件
luaL_loadfile(L,"cof.lua")
或者是
lua_dofile(L, "add.lua");
都可以加载Lua脚本

b.如果想从Lua脚本中读取变量
假设Lua脚本里有变量width和height
可以这样来读取
lua_getglobal(L,"width"); 
lua_getglobal(L,"height");
也就是把Lua里的变量读出来存到栈里面。
然后可以检验类型
 if(!lua_isnumber(L,-2))    
                  luaL_error(L,"`width' should be a number\n");  
 if(!lua_isnumber(L,-1))   
                  luaL_error(L,"`height' should be a number\n");  
由于Lua里的变量是没有类型的,因此读出来后要我们显示的转换
类型
*width = (int)lua_tonumber(L,-2);   
*height = (int)lua_tonumber(L,-1);  

c.如果想传递给Lua参数调用Lua里的函数
首先将Lua里的函数压栈
lua_getglobal(L,"add");   
 然后将要传递的参数依次压栈
 lua_pushnumber(L,a);lua_pushnumber(L,b); 
最后调用
if(lua_pcall(L,2,1,0) != 0) 
调用后栈里的元素全部弹出函数返回时返回值压栈因为函数有返回值,
所以要检验if(!lua_isnumber(L,-1))
 因为Lua里的数字没有类型所以返回值要类型转换 
 sum = (int)lua_tonumber(L,-1);  lua_pop(L,1) 

d.如果调用Lua里的无参函数
首先将函数名压栈
lua_getglobal(L,"roll_num"); 
然后调用if(lua_pcall(L,0,1,0) != 0)
然后验证返回值if(!lua_isnumber(L,-1)) 
最后转存  int n = (i nt)lua_tonumber(L,-1);   
弹出 lua_pop(L,1);  


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值