将返回btVector3的绑定函数使用luabind进行翻译。

我正在尝试使用 btVector3 绑定类。使用构造函数绑定 btVector3 是可以的。绑定函数,例如:

void SetPosition(const btVector3& position)

是可以的,但是绑定这个:

btVector3 GetPosition()

会给我以下错误:

error C2719: 'unnamed-parameter': formal parameter with __declspec(align('16')) won't be aligned

我了解 btVector3 是对齐的,如何修复/解决这个问题?

点赞
用户1780881
用户1780881

不确定是不是完全相同的问题(而且如果这仍然与您有关,已经两个月了),但我在使用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定义乘法运算符时。我希望这是类似的解决方法。

2012-12-27 19:09:09