C++将结构体传给lua

来源:互联网 发布:怎么注册域名网址 编辑:程序博客网 时间:2024/05/22 06:10

简单概要

就是将结构体传给lua。

代码

C++代码

void CProject1Dlg::OnBnClickedButton2(){// 打开换为 luaL_newstatelua_State *L = luaL_newstate() ; /* 打开 Lua */luaL_openlibs(L); /* 加载 .lib 文件 */// 加载脚本文件,需要放在程序目录luaL_loadfile( L, "test.lua" );lua_resume( L, 0 , 0);typedef struct{int a;CString strTest;struct test{int b;}c;}A;A a;a.a = 10;a.c.b = 322;a.strTest = _T("yes");lua_getglobal(L,"structTest");lua_newtable(L);lua_pushinteger(L,a.a);lua_setfield(L,-2,"a");lua_newtable(L);lua_pushinteger(L,a.c.b);lua_setfield(L,-2,"b");lua_setfield(L,-2,"c");lua_pushstring(L,CStringA(a.strTest).GetString());lua_setfield(L,-2,"strTest");lua_pcall(L,1,1,NULL);// // 输出计算结果CString c = CString(lua_tostring(L,-1)) ;lua_pop(L,1) ;// 清除堆栈 清除计算结果// 调用结束lua_close(L);MessageBox(c);}

Lua代码


function structTest(a)return string.format("做个测试 \r\n a.a = %d \n a.b = %d \n a.strTest = %s",a.a,a.c.b,a.strTest);end

运行结果