2

クラスをインポートするときに Luabind のプロパティを使用しようとしています。定義はすべて正しいと確信していますが、文字列または数値の場合に出力するなど、プロパティを呼び出すと、次のような結果が得られます

機能: 009EC440

なぜこれが起こっているのかわかりませんが、インターネットで調べてみると、同じ問題を抱えている人が何人か見つかりました。彼らは、次のパラメーターを使用して Luabind をビルドする必要があると言います。

bjam ツールセット=msvc-9.0 バリアント=デバッグ スレッド化=マルチ リンク=共有定義=_BIND_TO_CURRENT_VCLIBS_VERSION

これを試してみましたが、それでも同じエラーが発生します。注意すべきもう 1 つのことは、私は MSVC 2012 を使用しているため、toolset=msvc-11.0 でビルドしようとしましたが、やはり役に立ちませんでした。プロジェクトのビルドに Boost ビルドを使用していない場合は、LUABIND_DYNAMIC_LINK を定義する必要があることを読みました。これはまだこのエラーを引き起こしています。私も自分で Luabind を構築しようとしましたが、多くのシンボル エラーが発生するため、リンクに問題が発生しました (LUABIND_DYNAMIC_LINK を定義する場所がわからないため、誰かがこれを知っていれば問題が解決する可能性があります)。この問題を解決する方法を知っている人はいますか?


プロパティを宣言するコードは次のとおりです。

luabind::module(luaState)[
luabind::class_<Weapon>("Weapon")
    .def(luabind::constructor<float, float>())
    .def_readwrite("onFire", &Weapon::onFireFunc)
    .def_readonly("modifier", &Weapon::modifier)
];

そして、コンストラクターで宣言されたように、武器は Weapon クラスのインスタンスであり、次のようにアクセスしようとしています。

print(weapon.modifier)
weapon.onFire = onFire

静的リンクは機能しますが、次のパラメーターを使用して動的リンクで機能させたいと思います。

bjam ツールセット=msvc-9.0 バリアント=デバッグ スレッド化=マルチ リンク=静的定義=_BIND_TO_CURRENT_VCLIBS_VERSION

4

1 に答える 1

1

VS2008でも同じ問題がありました。(これは投稿から6か月後ですが、他の誰かを助けるかもしれません

LUABIND_DYNAMIC_LINK プリプロセッサ ディレクティブを追加して修正しました。

プロジェクト -> プロパティ -> C/C++ -> プリプロセッサ

プリプロセッサ定義のリストにLUABIND_DYNAMIC_LINKを追加します。

投稿の上部にあるのと同じ bjam コマンドを使用して luabind をビルドしました。

于 2013-09-11T18:26:21.837 に答える