(前提条件:
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
打印结果: