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的方 ...
随机推荐
- div里面的id与for
<input class="select" type="checkbox" value="1" id="checkboxjc ...
- 连做两场goodbye2016是怎样的体验.....
挖个坑 ..... 听q巨随机化A题和最后的splay/set 还有另外一位神犇的最大回文子矩阵.... 感觉真的好爽啊,神犇能把很难的题目转化为简单的模型----- ///跨年打码是怎样一种体 ...
- tomcat 配置ssi
tomcat想要使用html文件引入html文件的功能可以开启ssi,这样就可以在html文件中使用include指令,从而使得html文件可以动态加载html文件了. 开启ssi步骤如下: 1.ap ...
- ImageUtil(验证码数据生成工具类)
登录界面时,常常会使用到验证码图片生成,程序如下: package util; import java.awt.Color; import java.awt.Font; import java.awt ...
- jquery from提交和post提交
//from 提交 function login(){ $('#login_form').form('submit',{ url: '../../../bagechux ...
- UIView中间透明周围半透明(四种方法)
方法一 #import "DrawView.h" @implementation DrawView - (instancetype)initWithFrame:(CGRect)fr ...
- Jfinal连接SQLSERVER相关配置说明
driver=net.sourceforge.jtds.jdbc.Driver jdbcUrl = jdbc:sqlserver://localhost:1433;DatabaseName=test ...
- Git入门仅这篇就够了
版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/5978937.html 前言 大家好,我是Cavalier ...
- sql中的日期查询
今天的所有数据: 昨天的所有数据: 7天内的所有数据: 30天内的所有数据: 本月的所有数据: 本年的所有数据: 查询今天是今年的第几天: select datepart(dayofyear,getD ...
- S2SH简介
struts2简介 Struts2是由WebWork基础上发展起来的,与struts1比较,选用struts2的理由是:①Struts1要求Action类继承一个抽象基类,而Struts 2 Acti ...