Russian Qt Forum
Сентябрь 30, 2024, 18:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Не видно qt script generator bindings  (Прочитано 3335 раз)
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?
« Последнее редактирование: Ноябрь 10, 2010, 01:03 от Andrew12 » Записан
asvil
Гость
« Ответ #1 : Ноябрь 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.
Записан
SABROG
Гость
« Ответ #2 : Ноябрь 09, 2010, 12:31 »

Из-за этого наследования cpp из ecma script приводит к перерасходу памяти.
А если поразмышлять еще дальше, то лучше сразу использовать pyside. Однако для этого потребуется более компьютерных мощностей.

Либо расход памяти, либо тормоза. Первое имхо лучше (хотя и не исключает второго) Улыбающийся
Записан
Andrew12
Гость
« Ответ #3 : Ноябрь 10, 2010, 01:02 »

Вот как говорят: век живи, век учись, все равно дураком помрешь! Улыбающийся Похоже make release решает эту проблемму полностью. Пошел читать чем отличается release от debug mode! Всем спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 20.