C++ 如何在c++;

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"

我正在尝试将脚本机制集成到我现有的项目中。但是我不知道如何使用luabind将对象传递给lua

例如,我有一个实体类,我想在lua文件中更新它们

#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:异常是什么?