クラスをインポートするときに 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