利用luabind从C++中传递指针到lua中,lua操作指针对象

17 篇文章 1 订阅
4 篇文章 0 订阅

(前提条件:

1.配置好lua环境

2.配置好boost

3.编译好luabind

项目忙写的比较简单,详细使用可以QQ联系我545550598.主要功能是C++中传递一个指针到lua中,使用lua来操作C++中的指针对象,这样比把数据放到栈中去操作方便的多,直接对内存中的数据进行操作。



先创建一个自己需要使用的操作的类。

#pragma once

#include <iostream>

using namespace std;

 

 

class player

{

public:

         player();

         ~player();

         inlinevoid player_lua_print() {cout << "aa === " << aa <<endl;}

 

         intaa;

};

 

 

 

 

.cpp文件内容

#include "Player.h"

 

 

player::player()

{

         aa= 1;

}

 

player::~player()

{

}

 

 

2.注册类的成员和函数到提供给lua操作

 

         //注册类

         module(L)

                   [

                            class_<player>("player")

                            .def(constructor<>())

                            .def("lua_print",&player::player_lua_print)

                            .def_readwrite("aa",&player::aa)

                   ];

 

 

 

 

3.将指针放入到lua栈中

   lua_State* L = lua_open();

         if(!L)

                   returnfalse;

         luaL_openlibs(L);

         open(L);

         player*pplayer = new player;

         //把函数名压入栈顶

         lua_getglobal(L,"setplayer11");

         //用luabind的object来包装c++指针

         luabind::object l_object(L, pplayer);

         //把objec压入栈顶

         l_object.push(L);

         //调用LUA脚本的函数

         int  iRet = lua_pcall(L, 1, 0, 0);

 

.lua中的代码

 

function setplayer11(pPlayer)

   print(type(pPlayer))

   print("dugaoda1223 aa=", pPlayer.aa)

   pPlayer.aa = 10

   print("dugaoda1223 aa=", pPlayer.aa)

   print(pPlayer:lua_print())

end

 

 

打印结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值