C++ luabind不更改指针mingw

C++ luabind不更改指针mingw,c++,mingw,shared-ptr,luabind,C++,Mingw,Shared Ptr,Luabind,我已经修复了中的链接器错误,但现在我遇到了另一个问题。我通过在lua中调用createObject()来创建我的对象,这将为一个新对象创建一个boost::shared\u ptr,并将其添加到列表中,然后返回它 当我在LUA中做了更改时,在Windows上使用了MINW,这些更改没有被应用到C++对象。我的代码不会有问题,因为我在Linux上构建了同样的东西,并且运行良好 ObjectPtr createObject(PlayerPtr player){ ObjectPtr obj(n

我已经修复了中的链接器错误,但现在我遇到了另一个问题。我通过在lua中调用
createObject()
来创建我的对象,这将为一个新对象创建一个boost::shared\u ptr,并将其添加到列表中,然后返回它

当我在LUA中做了更改时,在Windows上使用了MINW,这些更改没有被应用到C++对象。我的代码不会有问题,因为我在Linux上构建了同样的东西,并且运行良好

ObjectPtr createObject(PlayerPtr player){
    ObjectPtr obj(new Object(player));
    window->world.objects.push_back(obj);
    return obj;
}

bool setup(lua_State* luastate, Window* caller){
    open(luastate);

    // initialize some other classes here.

    class_<Player, PlayerPtr> Player("Player");
    Player.def_readwrite("playerColor", &Player::playerColor);
    Player.def_readwrite("displayName", &Player::displayName);

    class_<Object, ObjectPtr> Object("WorldObject");
    Object.def_readwrite("health", &Object::health);
    Object.def_readwrite("maxHealth", &Object::maxHealth);
    Object.def_readwrite("mesh", &Object::mesh);
    Object.def_readwrite("location", &Object::location);
    Object.property("player", &Object::getPlayer, &Object::setPlayer);
    Object.def("setOnDeath", &Object::setOnDeath);

    module(luastate)[
        vec3,
        color,
        Player,
        WorldObject,
        def("isWindowOpen", &isWindowOpen),
        def("loadMesh", &MeshManager::LoadMesh),
        def("createObject", &createObject),
        def("createPlayer", &createPlayer),
        ];

    window = caller;
}
结果在控制台中显示“红色”。 但是在C++中,值只是“”。 我调试了它,对象确实被创建并添加到C++中的列表中,但是没有任何改变,因为所有的变量都处于缺省状态。 我认为这是luabind和mingw的问题,或者只是结构有问题

我从默认构建设置中更改的唯一一件事是,我需要做两件事来编译它:我在jamfile中设置LUA_路径以指向LUA所在的目录(而不是从环境变量中获取),然后我更改了

#elif BOOST_PP_ITERATION_FLAGS() == 1

因为mingw不喜欢
出于某种原因…(是的,我确实在正确的位置添加了#endif)


更新:我也尝试过使用msvc10,但它仍然存在同样的问题。我也尝试过用我的Linux上相同版本的boost构建它。但没有效果。

像你那样更改
#elif
是正常的(最近的一次boost更改破坏了Luabind)而且很可能与你的问题无关。@LucDanton我不这么认为,但我想我应该提供所有与构建相关的信息,以防万一。如果我可以得到预构建的二进制文件,那就最好了,但我搜索了很长一段时间都没有用。。。
#elif BOOST_PP_ITERATION_FLAGS() == 1
#else
#if BOOST_PP_ITERATION_FLAGS() == 1