转自:http://bbs.csdn.net/topics/350261649

=====main.cpp=======
#include "stdio.h" extern "C"
{
#include "lua/lua.h"
#include "lua/lualib.h"
#include "lua/lauxlib.h"
}; typedef struct
{
int wChairID;
int iHeroID;
int iChosenHeros[];
}
Player; /* LUA接口声明*/
lua_State* L; void Operate(Player &obj)
{
int i; lua_getglobal(L, "PlayOperate"); lua_newtable(L);
lua_pushstring(L, "wChairID");
lua_pushnumber(L, obj.wChairID);
lua_settable(L, -);
lua_pushstring(L, "iHeroID");
lua_pushnumber(L, obj.iHeroID);
lua_settable(L, -); lua_pushstring(L, "iChosenHeros");
lua_newtable(L);
for (i=;i<;++i)
{
lua_pushnumber(L, i);
lua_pushnumber(L, obj.iChosenHeros[i]);
lua_settable(L, -);
}
lua_settable(L, -); lua_call(L, , ); lua_pushstring(L, "wChairID");
int n=lua_gettop(L);
lua_gettable(L, -);
obj.wChairID = (int)lua_tonumber(L, -);
lua_pop(L, );
lua_pushstring(L, "iHeroID");
lua_gettable(L, -);
obj.iHeroID = (int)lua_tonumber(L, -);
lua_pop(L, );
lua_pushstring(L, "iChosenHeros");
lua_gettable(L, -);
for (i=;i<;++i)
{
lua_pushnumber(L, i);
lua_gettable(L, -);
obj.iChosenHeros[i]=(int)lua_tonumber(L, -);
lua_pop(L, );
} } int main(int argc, char *argv[])
{
int i;
Player obj; obj.wChairID = ;
obj.iHeroID = ; for(i=; i<; ++i)
obj.iChosenHeros[i]=; //print initial value
printf( "The origin is blow:\n");
printf( "obj.wChairID = %d\n", obj.wChairID);
printf( "obj.iHeroID = %d\n", obj.iHeroID);
for(i=; i<; ++i)
printf( "obj.iChosenHeros[%d] = %d\n", i, obj.iChosenHeros[i]); /* initialize Lua */
L = lua_open();
if (NULL == L)
{
return -;
}
/* load Lua base libraries */
luaL_openlibs(L); /* load the script */
luaL_dofile(L, "e:\\aaa.lua"); //这里指定aaa.lua文件的位置 /* call function */
Operate(obj); /* print the result */
printf( "The result is blow:\n");
printf( "obj.wChairID = %d\n", obj.wChairID);
printf( "obj.iHeroID = %d\n", obj.iHeroID);
for(i=; i<; ++i)
printf( "obj.iChosenHeros[%d] = %d\n", i, obj.iChosenHeros[i]); /* cleanup Lua */
lua_close(L); return ; } =============aaa.lua==========
function PlayOperate(x)
x.wChairID = x.wChairID+
x.iHeroID = x.iHeroID+
x.iChosenHeros[]=
x.iChosenHeros[]= return x
end

Lua C++互传结构体实例的更多相关文章

  1. ctypes 操作 python 与 c++ dll 互传结构体指针

    CMakeLists.txt # project(工程名) project(blog-3123958139-1) # add_library(链接库名称 SHARED 链接库代码) add_libra ...

  2. C#调用C++系列二:传结构体

    这一篇记录下C#调用C++的结构体的方式来使用OpenCV的数据格式,这里会有两种方式,第一种是C#传一个结构体和图像的路径给C++,然后C++将图像加载进来,再把传进来的结构体填满即可,第二种是C# ...

  3. C#中使用反射获取结构体实例

    一般用反射获取类对象的实例比较简单,只要类有一个无参构造函数或没有显示声明带参的构造函数即可使用如下代码 static void Main(string[] args) { Type type = t ...

  4. Qt socket中怎么传结构体?

    直接发送和接收结构体,例如:struct A {...};struct A objectA; 发送的时候: tcpSocket->write((char *)&objectA, size ...

  5. C语言结构体实例-创建兔子

    参考裸编程思想. #include <stdio.h> //#include "ycjobject.h" // 颜色定义 #define CL_BLACK 0 #def ...

  6. C结构体中数据的内存对齐问题

    转自:http://www.cnblogs.com/qwcbeyond/archive/2012/05/08/2490897.html 32位机一般默认4字节对齐(32位机机器字长4字节),64位机一 ...

  7. 转载 C#结构体(struct)和类(class)的区别

    转载原地址: http://dotnet.9sssd.com/csbase/art/8 C#结构体和类的区别问题:在C#编程语言中,类属于引用类型的数据类型,结构体属于值类型的数据类型,这两种数据类型 ...

  8. 深入理解C指针之六:指针和结构体

    原文:深入理解C指针之六:指针和结构体 C的结构体可以用来表示数据结构的元素,比如链表的节点,指针是把这些元素连接到一起的纽带. 结构体增强了数组等集合的实用性,每个结构体可以包含多个字段.如果不用结 ...

  9. Swift 结构体的使用

    Swift 结构体是构建代码所用的一种通用且灵活的构造体. 我们可以为结构体定义属性(常量.变量)和添加方法,从而扩展结构体的功能. 与 C 和 Objective C 不同的是: 结构体不需要包含实 ...

随机推荐

  1. 源代码管理:SVN源代码管理器在ASP.NET VS中的使用注意事项

    一共有三个软件 1.ASP.NET下SVN有三个是不受管理的,bin文件夹,obj文件夹,.user类型文件,位置在TortoiseSVN的Settings下面的Subversion下的[Global ...

  2. Gerrit 使用规范

    代码提交要求 一个Commit对应一个修改点(除非是在项目初始阶段或是升级BSP时). 不要随便修改文件的属性.Windows 修改过的文件属性会变成755,上传代码时请注意修改成文件的原属性,可以用 ...

  3. stm32 定时器TIM时钟步骤

    1)TIM3 时钟使能 . RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMx, ENABLE); //时钟使能 2) 初始化定时器参数,设置自动重装值, 分频系数, ...

  4. centos配置ruby开发环境(转 )

    转自http://my.oschina.net/u/1449160/blog/260764   1. 安装ruby 1.1 yum安装,版本旧 #yum install ruby ruby-devel ...

  5. poj-1112 (二分图染色+dp分组)

    #include <iostream> #include <algorithm> #include <cstring> using namespace std; ; ...

  6. unknown error: call function result missing 'value'

    好好的脚本全部报错,遇到这种现在看一下自己Chrome浏览的版本号 然后去chromedriver官网上下载最新驱动文件 https://sites.google.com/a/chromium.org ...

  7. 查看图片插件--Viewer(类似于qq和微信聊天 的查看图片)

    Viewer的github地址:https://github.com/fengyuanchen/viewer  下载该插件(在文件夹dist里面) 具有参考价值的几个网站:http://www.dow ...

  8. django所遇到问题简单总结

    问题虽小,但却值得深思 一.改mysql密码 方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = ...

  9. (2)bytes类型

    bytes类型就是字节类型 把8个二进制一组称为一个byte,用16进制来表示 Python2里面字符串其实更应该称为字节串,但是python2里面有一个类型是butes,所以在Python2里面by ...

  10. hdu1355

    题意:有一片矩形花生田在路的一侧,田上的整数坐标位置有0个或多个花生,现规定从路上走到田地最边上的某个格点位置.从田边上走回路上.从一个格点移动到另一个格点.采摘格点上的花生,这四种动作都要花费一单位 ...