C++ 如何在c++;
我正在尝试将脚本机制集成到我现有的项目中。但是我不知道如何使用luabind将对象传递给lua 例如,我有一个实体类,我想在lua文件中更新它们C++ 如何在c++;,c++,binding,lua,C++,Binding,Lua,我正在尝试将脚本机制集成到我现有的项目中。但是我不知道如何使用luabind将对象传递给lua 例如,我有一个实体类,我想在lua文件中更新它们 #include <stdio.h> #include <ctime> #include <iostream> #include <string> #include <list> using namespace std; extern "C" { #include "lua.h"
#include <stdio.h>
#include <ctime>
#include <iostream>
#include <string>
#include <list>
using namespace std;
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
#include <luabind/luabind.hpp>
class Entity
{
public:
Entity(){}
~Entity(){}
void setSpeed(double adSpeed){m_dSpeed = adSpeed;}
void setPosition(double adPosition){m_dPosition = adPosition;}
double getSpeed(){return m_dSpeed;}
double getPosition(){return m_dPosition;}
private:
double m_dSpeed;
double m_dPosition;
};
int main() {
// Create a new lua state
lua_State *myLuaState = lua_open();
// Connect LuaBind to this lua state
luabind::open(myLuaState);
// Export our class with LuaBind
luabind::module(myLuaState) [
luabind::class_<Entity>("Entity")
.def(luabind::constructor<void>())
.property("m_dSpeed", &Entity::getSpeed, &Entity::setSpeed)
.property("m_dPosition", &Entity::getPosition, &Entity::setPosition)
];
luabind::object table = luabind::newtable(myLuaState);
Entity* entity1 = new Entity;
table["Entity1"] = entity1;
//How to pass entity object to lua
luabind::luaL_dofile(myLuaState, "UpdatePosition.lua");
lua_close(myLuaState);
return 1;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
外部“C”
{
#包括“lua.h”
#包括“lauxlib.h”
#包括“lualib.h”
}
#包括
类实体
{
公众:
实体(){}
~Entity(){}
void setSpeed(双adSpeed){m_dSpeed=adSpeed;}
void setPosition(双adPosition){m_dPosition=adPosition;}
double getSpeed(){return m_dSpeed;}
double getPosition(){return m_dPosition;}
私人:
双m_速度;
双m_位置;
};
int main(){
//创建一个新的lua状态
lua_State*myLuaState=lua_open();
//将LuaBind连接到此lua状态
luabind::打开(mylustate);
//用LuaBind导出我们的类
luabind::模块(myLuaState)[
luabind::类(“实体”)
.def(luabind::constructor())
.property(“m_dSpeed”、&Entity::getSpeed、&Entity::setSpeed)
.property(“m_dPosition”、&Entity::getPosition、&Entity::setPosition)
];
luabind::object table=luabind::newtable(mylustate);
实体*entity1=新实体;
表[“Entity1”]=Entity1;
//如何将实体对象传递给lua
luabind::luaL_dofile(mylustate,“UpdatePosition.lua”);
卢阿努克洛斯(myLuaState);
返回1;
}
下面是代码。我想学习的是将实体对象和时间值传递给lua,并使用它们的速度和增量时间更新它们的位置
luabind::globals(myLuaState)["entities"] = table;
基本上,
luabind::globals(lua)
返回您可以像往常一样操作的\u G
lua表。当我将这一行添加到代码中时。由于未处理的异常,代码在运行时崩溃。@Qubeuc:异常是什么?