Russian Qt Forum

Qt => Общие вопросы => Тема начата: Andrew12 от Ноябрь 08, 2010, 23:31



Название: [РЕШЕНО] Не видно qt script generator bindings
Отправлено: Andrew12 от Ноябрь 08, 2010, 23:31
Здравствуйте,

Пишу модуль работы с gui формами с поддержкой скриптов.
1. Собрал QtScriptGenerator, получил набор .dll (qtscript_cored.dll, и т.д.)
2. Разместил их в каталоге data/script
3. Добавил в app.setLibraryPaths путь.
4. При проверке engine.availableExtensions() не обнаруживается ни одного расширения, лишь слегка задумывается.
5. Работало на qt 4.7 beta. Данная проблемма появилась после переустановки последнего qt 4.7 release.

По подозрению, что проблемма в несовпадении версий, после 10 попыток пересобрать заново mingw, qt47 и qtscript generator решил обратиться сюда.
QT: ver. 4.7, MinGW: ver 4.5, QTScriptGenerator с gitorius.org.

Подскажите, в чем может быть проблемма. Может как-то по особому надо пересобрать QT?


Название: Re: Не видно qt script generator bindings
Отправлено: asvil от Ноябрь 09, 2010, 12:25
Ну что же если все работало, значит с новыми библиотеками все поломалось. Значит поломалось из-за новых библиотек.
Установите переменную окружения QT_DEBUG_PLUGINS в значение 1. И запустите из-под отладчика, чтобы промотреть stderr (всмысле DbgOutput или как он там называется). Просмотрите stderr и это мне в приниципе никогда не помогало.
Возмите класс QLibrary вот так: QLibrary library("data/script/qtscript_core.dll"), library.load(), qDebug() << library.errorString(). И это мне помогало почти всегда.
Динамические библиотеки с суффиксом d, как в вашем случае обычно соединяются с библиотеками такого же суффикса. Проверьте наличие QtCored.dll в папке с Qt Framework.
А вообще плагины нужно компилировать в release mode. Те в папке qtscriptgenerator/qtbindings/ надо сделать make release.
Но давайте продолжим дальше наши размышления. Я, желая Вам успеха и процветания, не рекомендую использовать qt script bindings generator, и вообще Qt Script и тем более QtDeclarative. Почему? Да потому что данные обертки - это куча новых классов, куча новых вызовов функций и соответсвенно куча последующих ошибок. В частности из-за несовпадения концепций наследования в cpp и ecma script. В первом...эм инкапсуляция что-ли, а во втором прототипность. Qt script generator не умеет генерировать прототипы. Из-за этого наследования cpp из ecma script приводит к перерасходу памяти. Ну и к логическим ошибкам тоже приводит.
На мой взгляд необходимо использовать PythonQt - эдакая замена QtScript. Интересна, но не столь проста в освоении. Пайтон гораздо более ближе к cpp, чем ecma script. А если поразмышлять еще дальше, то лучше сразу использовать pyside. Однако для этого потребуется более компьютерных мощностей.
Вообщем и целом, скомпилируйте плагины в release mode, и именно для Qt 4.7 release.


Название: Re: Не видно qt script generator bindings
Отправлено: SABROG от Ноябрь 09, 2010, 12:31
Из-за этого наследования cpp из ecma script приводит к перерасходу памяти.
А если поразмышлять еще дальше, то лучше сразу использовать pyside. Однако для этого потребуется более компьютерных мощностей.

Либо расход памяти, либо тормоза. Первое имхо лучше (хотя и не исключает второго) :)


Название: Re: Не видно qt script generator bindings
Отправлено: Andrew12 от Ноябрь 10, 2010, 01:02
Вот как говорят: век живи, век учись, все равно дураком помрешь! :) Похоже make release решает эту проблемму полностью. Пошел читать чем отличается release от debug mode! Всем спасибо.