Lua与C++互相调用(上)
来源:互联网 发布:怎样在淘宝网上注册 编辑:程序博客网 时间:2024/05/27 00:45
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 != 0){ printf("load file error %s\n", luaL_checkstring(L, -1)); lua_pop(L, 1); } //一定要按照lua_pcall(L,0,0,0)的形式调用一下,个人感觉是将lua全运行起来 ret = lua_pcall(L, 0, 0, 0); if(ret != 0){ printf("pcall error %s\n", luaL_checkstring(L, -1)); lua_pop(L, 1); } stackDump1(L); //lua_getglobal会将某lua变量放置到栈顶 lua_getglobal(L, "var1"); lua_getglobal(L, "var2"); printf("lua var2 = %td ,var1=%td\n",lua_tointeger(L, -1),lua_tointeger(L, -2)); lua_getglobal(L, "add"); lua_pushinteger(L, 1); lua_pushinteger(L, 2); //lua_call 调lua函数;2个参数,1个返回值 lua_call(L, 2, 1); stackDump1(L); lua_close(L); return 0;}
以上是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 != 0){ printf("%s\n",luaL_checkstring(L, -1)); lua_pop(L, -1); } lua_close(L); return 0;}
Lua代码
var1 = 100var2 = 200print("i am lua")--print( func1(10,11) )function add(v1,v2) return v1+v2;endprint(add(1,2))
PS:
使用lua 5.2
写了注释,如果有不明白的地方,请评论里问
下一篇讲一下lua 栈的一些东西
0 0
- Lua与C++互相调用(上)
- C/C++与Lua互相调用
- lua与c语言互相调用
- lua与C的互相调用
- Lua 脚本语言 与 C的互相调用
- Lua:模块、使用位操作BitOp、C API(Lua与C互相调用)
- cocos2d-x中lua与C++,C语言互相调用
- C和lua的互相调用
- Lua和C的互相调用
- C和lua的互相调用
- c和lua之间互相调用方法
- LUA与C++互相调用简单例子
- COCOS2DX与LUA互相调用使用方法
- Cocos2d C++与lua互相调用
- Lua编程之Lua和C之间互相调用方式
- C与C++互相调用
- c与c++互相调用
- c++与c互相调用
- 网络游戏剧情副本的一种实现方式(上)
- 网络游戏剧情副本的一种实现方式(中)
- cocos2d-x 将cocosbuilder输出文件映射成对象的原理
- C++类的内存分配
- spring 4.1.5 到 4.3.5中defaultContentType 报错的解决
- Lua与C++互相调用(上)
- 从京东退货体验吐槽客服流程
- Lua 栈的理解
- cocoapods 安装使用指南
- quick cocos2d-x 入门---井字棋
- 实战caffe多标签分类——汽车品牌与车辆外观(C++接口)[详细实现+数据集]
- LBF特征
- 读Lua游戏开发实践指南
- 将博客搬至CSDN