У меня проблема с 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
функций.
Для справки я использую:
- Lua 5.1.4
- Луабинд 0.9.1
- VS2010
И Lua, и Luabind являются свежими версиями их rev. (Не использую Lua 5.2 по причинам ограничения проекта, но если есть __stdcall
исправление для 5.2 / Luabind, я с радостью воспользуюсь и этим.)
Я смог найти исправление только для очень старой версии Luabind, чтобы сделать это, но патч, плавающий в сети, все еще не соответствует текущему коду Luabind вообще.
Если вам нужна другая информация, не стесняйтесь спрашивать.