Lua与C++互相调用(上)
int main1(int argc, const char * argv[])
{ lua_State* L = luaL_newstate();//创建栈
luaopen_base(L);
luaopen_io(L);//打开lua base,io两个库 int ret = luaL_loadfile(L,"tlua.lua");//加载tlua.lua文件
//成功后会返回0,反之返回非0;同时错误信息放到栈顶
if(ret != ){
printf("load file error %s\n",
luaL_checkstring(L, -));
lua_pop(L, ); }
//一定要按照lua_pcall(L,0,0,0)的形式调用一下,个人感觉是将lua全运行起来
ret = lua_pcall(L, , , );
if(ret != ){
printf("pcall error %s\n",
luaL_checkstring(L, -));
lua_pop(L, );
}
stackDump1(L); //lua_getglobal会将某lua变量放置到栈顶
lua_getglobal(L, "var1");
lua_getglobal(L, "var2");
printf("lua var2 = %td ,var1=%td\n",lua_tointeger(L, -),lua_tointeger(L, -)); lua_getglobal(L, "add");
lua_pushinteger(L, );
lua_pushinteger(L, );
//lua_call 调lua函数;2个参数,1个返回值
lua_call(L, , ); stackDump1(L); lua_close(L);
return ;
}
以上是c++调lua ,以下是lua调c++
int main(int argc, const char * argv[])
{
lua_State* L = luaL_newstate();
stackDump2(L); luaopen_base(L);
luaopen_string(L);
luaopen_table(L);
stackDump2(L); lua_register(L,"func1",func1);//注册func1,当lua调用时,可以知道指向哪个函数指针
int i = luaL_dofile(L,"tlua.lua");
stackDump2(L);
if( i != ){
printf("%s\n",luaL_checkstring(L, -));
lua_pop(L, -);
}
lua_close(L);
return ;
}
Lua代码
var1 =
var2 = print("i am lua")
--print( func1(,) ) function add(v1,v2)
return v1+v2;
end
print(add(,))
PS:
使用lua 5.2
写了注释,如果有不明白的地方,请评论里问
下一篇讲一下lua 栈的一些东西
Lua与C++互相调用(上)的更多相关文章
- Lua与C++相互调用
{--1.环境--} 为了快速入手,使用了小巧快速的vc++6.0编译器 以及在官网下载了Lua安装包..官网地址{--http://10.21.210.18/seeyon/index.jsp--} ...
- dedecms文章页调用上一篇和下一篇文章
dedecms文章页调用上一篇和下一篇文章,解析后是链接形式的上下篇 {dede:prenext get='pre'/} {dede:prenext get='next'/}
- Lua C/C++互相调用
先来说下大致脚本引擎框架,此次采用如下,即运行C++代码启动程序,然后加载Lua脚本执行! 1.基础 Lua脚本中只能调用 int (*lua_CFunction) (lua_State *L) 这种 ...
- lua编程之lua与C相互调用
lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情 ...
- 在小程序中修改上一个页面里data中的数据调用上一个页面的方法
//获取已经打开的页面的数组 var pages = getCurrentPages(); //获取上一个页面的所有的方法和data中的数据 var lastpage = pages[pages.l ...
- 调用上一个页面的js方法
点击商品分类,弹出下框 点击确定,将选中的类别的name和唯一的code返回到上个页面 function save(){ var ids = getIdSelections(); jp.get(&qu ...
- phpcms v9文章内容页调用上一篇下一篇的方法(转)
phpcms v9文章内容页调用上一篇下一篇的方法如下,魔客吧(www.moke8.com)提示您直接摘取如下代码中的红色部分即可: 上一篇:{$previous_page[url]}" t ...
- Tom_No_02 Servlet向流中打印内容,之后在调用finsihResponse,调用上是先发送了body,后发送Header的解释
上次在培训班学上网课的时候就发现了这个问题,一直没有解决,昨天又碰到了,2-3小时也未能发现点端倪,今早又仔细缕了下,让我看了他的秘密 1.Servlet向流中打印内容,之后在调用finsihResp ...
- uLua学习笔记(三):Unity3D和Lua之间的相互调用
这篇笔记主要集中学习一下uLua和Unity3D之间相互调用的方法,我们导入了uLua之后,现在会弹出一个类似学习屏幕的东西,如下: 先赞一个! Unity3D调用Lua Unity3D调用Lua的方 ...
随机推荐
- Struts框架——(一)用Servlet + JSP演示Struts基本原理
一. 用Servlet + JSP演示Struts基本原理 struts是开源项目.它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web应用的MVC的应用框架.Stru ...
- Tomcat8安装, 安全配置与性能优化
一.Tomcat 安装 官网:http://tomcat.apache.org/ Tomcat8官网下载地址:http://tomcat.apache.org/download-80.cgi 为了便于 ...
- alphaRGB 转 RGB、16位
struct xColor { BYTE b, g, r, a; }; struct RGBColor { BYTE b, g, r; }; //void operator <<(RGBC ...
- WIN32_LEAN_AND_MEAN宏
网上说: 不加载MFC所需的模块. 用英语解释:Say no to MFC 如果你的工程不使用MFC,就加上这句,这样一来在编译链接时,包括最后生成的一些供调试用的模块时,速度更快,容量更小. 我们经 ...
- nerual style 执行命令
python neural_style.py --content ./examples/4-content.jpg --styles ./examples/4-faguo-style.jpg --ou ...
- 用 python实现简单EXCEL数据统计
任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_ ...
- 【python】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
# encoding:utf-8 # p001_1234threeNums.py def threeNums(): '''题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多 ...
- 纯CSS实现Tooltip
DEMO: span{ position:relative; display:inline-block; height:3em; width:3em; margin:0 0.4em; line-hei ...
- 一个Email
Email 1.接受表单数据并用单独变量保存起来,判断用户协议,这个是必须同意的.2.判断验证码,利用验证码类Captcha.3.判断用户名,密码,邮箱规则,利用Verify类验证.4.判断唯一性,邮 ...
- 实战录 | Kafka-0.10 Consumer源码解析
<实战录>导语 前方高能!请注意本期攻城狮幽默细胞爆表,坐地铁的拉好把手,喝水的就建议暂时先别喝了:)本期分享人为云端卫士大数据工程师韩宝君,将带来Kafka-0.10 Consumer源 ...