1

btVector3 を使用してクラスをバインドしようとしています。コンストラクターで btVector3 をバインドすると正常に動作します。次のようなバインディング関数:

void SetPosition(const btVector3& position)

正常に動作しますが、これをバインドします:

btVector3 GetPosition()

次のエラーが表示されます:

エラー C2719: 'unnamed-parameter': __declspec(align('16')) の仮パラメーターは位置合わせされません

btVector3 が調整されていることは理解していますが、これを修正/回避するにはどうすればよいですか?

4

1 に答える 1

0

それがまったく同じ問題である場合(そしてそれがまだあなたに関連している場合は、ほぼ2か月後)、Dunnoですが、Luabindを使用してBulletbtTransformsをバインドするのに問題がありました。たとえば、これはあなたが説明したのと同じエラーを与えました:

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-27T19:09:09.383 に答える