使用luabind返回btVector3的绑定函数

时间:2012-11-06 10:46:58

标签: luabind bullet

我正在尝试使用btVector3绑定类。绑定btVector3与构造函数工作正常。绑定功能如:

void SetPosition(const btVector3& position)

工作正常,但绑定了这个:

btVector3 GetPosition()

给了我以下错误:

  

错误C2719:'unnamed-parameter':形式参数用   __declspec(align('16'))将不会对齐

据我所知,btVector3是对齐的,如何修复/解决此问题?

1 个答案:

答案 0 :(得分:0)

Dunno,如果它是完全相同的问题(如果它仍然与你相关,差不多两个月),但我在使用Luabind绑定Bullet btTransforms时遇到问题。例如,这给出了您描述的相同错误:

void bindBtTransform(lua_State *L) {
    luabind::module(L)
    [
        luabind::class_<btTransform>("btTransform")
            // constructors
            .def(luabind::constructor<>())

            // methods
            // INCORRECT -------------------------------------------------------
            .def("getOrigin", &btTransform::getOrigin)
    ];

    return;
}

然而,当我给出getOrigin()函数的完整签名时,它起作用了:

void bindBtTransform(lua_State *L) {
    luabind::module(L)
    [
        luabind::class_<btTransform>("btTransform")
            // constructors
            .def(luabind::constructor<>())

            // methods
            // CHANGE TO THIS-------------------------------------------------
            .def("getOrigin", (const btVector3& (btTransform::*)() const)&btTransform::getOrigin)
    ];

    return;
}

希望对你有用;当我做出改变时,我的问题立即得到了解决。

我现在仍然收到错误,但只有在我为btQuaternions定义乘法运算符时才会这样。我希望这是一个类似的修复。