Luabind に問題があり、過度に単純化されたソリューションなしでは修正方法がわからないという問題があります。
Luabind は、__cdecl
呼び出し規約を使用した関数へのバインドのみを許可しているようです。私の現在のプロジェクトでは、拡張機能/プラグインに公開されているすべての機能が を使用して公開されて__stdcall
います。これにより、公開されたオブジェクトを直接バインドできなくなり、代わりに、公開されたオブジェクトのラッパーを作成する必要があります。これで問題ありませんが、ラップする必要のあるオブジェクトがたくさんあります。
たとえば、オブジェクトは次のようになります。
struct IObject
{
void __stdcall SomeFunc1( void );
void __stdcall SomeFunc2( const char* );
};
struct IObjectContainer
{
IObject* __stdcall GetObject( int );
IObject* __stdcall GetObject( const char* );
};
struct IObjectCore
{
IObjectContainer* __stdcall GetObjectContainer();
};
現在、プロジェクト全体の呼び出し規則を変更するオプションがないため、関数を操作するために Luabind にパッチを適用するソリューションがあるかどうかを確認してい__stdcall
ます。私はテンプレートやブースト機能が得意ではないので、機能を使用する__stdcall
機能をどこから追加しようとしているのかさえ個人的にはわかりません.
参考までに、私は以下を使用しています:
- ルア 5.1.4
- ルバインド 0.9.1
- VS2010
Lua と Luabind は両方とも、rev の最新バージョンのストックです。(プロジェクトの制限により Lua 5.2 は使用しませんが、5.2/Luabind の修正があれば__stdcall
喜んでそれを受け入れます。)
これを行うための非常に古いバージョンの Luabind の修正しか見つけることができませんでしたが、ネット上にまだ浮かんでいるパッチは、現在の Luabind コードとはまったく一致していません。
他に必要な情報があれば、お気軽にお尋ねください。