Ну вот и дошел до финальной стадии скрипт-биндинга(AngelScript), в которой осталось корректно забиндить MyGUI.
Есть ли где-нибудь примеры реализации биндинга (не важно на каком скрипте)? Для ускорения процесса... =)
Фух, набрутфорсил =) может кому-то понадобится (AngelScript & MyGUI):
PreBind (часть 1):
PreBind (часть 2):
GUIController - класс с asIScriptObject (ScriptController'ом), вызывающим необходимые функции event'ов...
Бинд (часть 1):
Бинд (часть 2):
Бинд (часть 3):
Затем GUIManager регистрируется и юзается в скрипте. Код написан на скорую руку и требует оптимизаций, но вроде бы пока useful =)
Глубже биндить пока желания нет.
Altren, my.name
Привет, вы все еще работаете над библиотекой? Есть надежды на обновление утилит, расширение функционала?
Да, работаем, хотя последние пара месяцев вышли не очень продуктивными.
Из основного с момента выхода версии 3.2.0 - были переработаны и сильно улучшены утилиты; исправлен ряд багов, преимущественно минорных. По функционалу ядра существенных изменений не было, т.к. в основном все устраивает.
Altren
Это отлично, не бросайте :)
Можно вопрос, я не вижу нативного способа делать чеклистбоксы или вообще листбоксы и мультилистбоксы из произвольных виджетов. Это действительно только руками, или я не туда смотрю?
То есть на уровне listBox->AddItem(widget, ...), для произвольного widget, кнопка, там или эдитбокс.
1>MyGUI.DirectXPlatform.lib(MyGUI_DirectXDataManager.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Main.obj 1>MyGUI.DirectXPlatform.lib(MyGUI_DirectXRenderManager.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Main.obj 1>MyGUI.DirectXPlatform.lib( MyGUI_DirectXVertexBuffer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Main.obj 1>MyGUI.DirectXPlatform.lib(MyGUI_DirectXTexture.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Main.obj 1>MyGUI.DirectXPlatform.lib( MyGUI_DirectXRTTexture.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)" (?_Decref@facet@locale@std@@QAEPAV123@XZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" (?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ) already defined in libcpmtd.lib(locale0.obj) 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "void __cdecl std::_Xout_of_range(char const *)" (?_Xout_of_range@std@@YAXPBD@Z) already defined in libcpmtd.lib(xthrow.obj) 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Init(void)" (?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: bool __thiscall std::codecvt_base::always_noconv(void)const " (?always_noconv@codecvt_base@std@@QBE_NXZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPBD@Z) already defined in libcpmtd.lib(xthrow.obj) 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __thiscall std::locale::facet::_Incref(void)" (?_Incref@facet@locale@std@@QAEXXZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: static unsigned int __cdecl std::codecvt<char,char,int>::_Getcat(class std::locale::facet const * *,class std::locale const *)" (?_Getcat@?$codecvt@DDH@std@@SAIPAPBVfacet@locale@2@PBV42@@Z) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in libcpmtd.lib(xlock.obj) 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in libcpmtd.lib(xlock.obj) 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::~basic_streambuf<char,struct std::char_traits<char> >(void)" (??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::basic_streambuf<char,struct std::char_traits<char> >(void)" (??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::locale __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::getloc(void)const " (?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "struct _iobuf * __cdecl std::_Fiopen(char const *,int,int)" (?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z) already defined in libcpmtd.lib(fiopen.obj) 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "bool __cdecl std::uncaught_exception(void)" (?uncaught_exception@std@@YA_NXZ) already defined in libcpmtd.lib(uncaught.obj) 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __int64 __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,__int64)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __thiscall std::basic_ostream<char,struct std::char_traits<char> >::~basic_ostream<char,struct std::char_traits<char> >(void)" (??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: char * __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::clear(int,bool)" (?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in Main.obj 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" (?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z) already defined in libcpmtd.lib(ios.obj) 1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __thiscall std::basic_ios<char,struct std::char_traits<char> >::~basic_ios<char,struct std::char_traits<char> >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ) already defined in Main.obj ................и т.д. в таком духе 1>*********************************************.exe : fatal error LNK1120: 13 unresolved externals
я что-то не подключил или чтото не так собрал?
Причины может быть две:
1. Линкуемые библиотеки(или их часть) и само приложение собраны в разных режимах - что-то в Debug, что-то в Release.
2. В некоторых версиях студии был такой баг, решался он чистой пересборкой.
Хотя, судя по тому, что линкуется MyGUI.DirectXPlatform.lib, а не MyGUI.DirectXPlatform_d.lib - приложение собрано в debug режиме и к нему линкуются релизная версия MyGUI.DirectXPlatform, отсюда и проблема линковки.
Внезапно узнал, что разработчики MyGUI это вы. Круто, молодцы!
Sergio пещерный человек....
Altren
> Хотя, судя по тому, что линкуется MyGUI.DirectXPlatform.lib, а не
> MyGUI.DirectXPlatform_d.lib - приложение собрано в debug режиме и к нему
> линкуются релизная версия MyGUI.DirectXPlatform, отсюда и проблема линковки.
да, так и окозалось, насобирал/накомпилил кучу всего и запутался, спасибо)
Тема в архиве.