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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: QScriptEngine в dll  (Прочитано 21118 раз)
freebsdd
Гость
« Ответ #15 : Декабрь 02, 2015, 13:09 »

Мне стыдно, но отладчик не настраивал, пока не разбирался как установить его на QtCreator...
Разработка без отладки - довольно-таки странный подход...

Цитировать
Вроде всё хорошо, Есть Приложение, создаю дочку CALC , не может, почему? Что я не так делаю?
Судя по
Цитировать
QScriptEngine: Must construct a Q(Core)Application before a QScriptEngine
приложения ещё нет


Код:
Calc::Calc(QObject *parent) : QObject(parent){

    qDebug() << "parent: " << parent;
    <...>

qDebug() говорит, что дескриптор передан:

Calc: parent:  MainWindow(0x24fea0, name = "MainWindow")

Хотя вроде всё просто очень... Но может неверно передаю или делаю?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #16 : Декабрь 02, 2015, 13:13 »

Причём здесь MainWindow Непонимающий
Зачем в n-ом посте пастить одно и тоже?
Сказано же, что
Цитировать
QScriptEngine: Must construct a Q(Core)Application before a QScriptEngine
Записан

Qt 5.11/4.8.7 (X11/Win)
freebsdd
Гость
« Ответ #17 : Декабрь 02, 2015, 13:22 »

Причём здесь MainWindow Непонимающий
Зачем в n-ом посте пастить одно и тоже?
Сказано же, что
Цитировать
QScriptEngine: Must construct a Q(Core)Application before a QScriptEngine


MainWindow - это родитель, родитель в библиотеку передаётся, я про это.

Сказано то хорошо, но но так как вопрос решить с этим сообщением?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Декабрь 02, 2015, 14:01 »

..но отладчик не настраивал, пока не разбирался как установить его на QtCreator...
Нет, товарищ, так дело не пойдет, без отладчика это не работа а хз что, можно и месяцами мудохаться без толку.

И не "растекайтесь мыслью по древу". Вы проверили qApp? Нет, так чего хвататься за MainWindow?
Записан
freebsdd
Гость
« Ответ #19 : Декабрь 02, 2015, 15:11 »

..но отладчик не настраивал, пока не разбирался как установить его на QtCreator...
Нет, товарищ, так дело не пойдет, без отладчика это не работа а хз что, можно и месяцами мудохаться без толку.

И не "растекайтесь мыслью по древу". Вы проверили qApp? Нет, так чего хвататься за MainWindow?

Оооо, мой глубокий пардон, я подумал Вы про дескрипторы, всё, сделал, как просили:

из GUI:
1::  QApplication(0x19fdcc)

из DLL:
2::  QObject(0x0)


Только qApp, это же указатель от созданного QApplication, как он может быть в библиотеке, там же нет его создания?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #20 : Декабрь 02, 2015, 15:18 »

Только qApp, это же указатель от созданного QApplication, как он может быть в библиотеке, там же нет его создания?
Мде... как всё запущено Грустный
Чего с базовыми знаниями совсем беда.
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #21 : Декабрь 02, 2015, 15:26 »

..всё, сделал, как просили:
Как "предложили" Улыбающийся Теперь проверьте что говорил Змей - может это на инициализации dll?  Какая печать выскакивает первой?

Только qApp, это же указатель от созданного QApplication, как он может быть в библиотеке, там же нет его создания?
Он и не в библиотеке, но должен быть видим для нее
Записан
freebsdd
Гость
« Ответ #22 : Декабрь 02, 2015, 15:42 »

..всё, сделал, как просили:
Как "предложили" Улыбающийся Теперь проверьте что говорил Змей - может это на инициализации dll?  Какая печать выскакивает первой?

Только qApp, это же указатель от созданного QApplication, как он может быть в библиотеке, там же нет его создания?
Он и не в библиотеке, но должен быть видим для нее

Понял, хорошо, благодарю!


По печати:

При:
Calc *mc = new Calc(this);

Первое, что выходит:
QObject: Cannot create children for a parent that is in a different thread.
(Parent is MainWindow(0x1efb70), parent's thread is QThread(0x3b5928), current thread is QThread(0x405f70)

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #23 : Декабрь 02, 2015, 16:00 »

QObject: Cannot create children for a parent that is in a different thread.
(Parent is MainWindow(0x1efb70), parent's thread is QThread(0x3b5928), current thread is QThread(0x405f70)
До этого очередь дойдет, то (предполагаю) еще одна проблема или ошибка. Но сейчас надо до конца разобраться с qApp. Вот Вы вставили 2 печати qApp - одну в приложении, сразу после создания QApplication. и вторую в dll. Какая из них первая в консоли?
Записан
freebsdd
Гость
« Ответ #24 : Декабрь 02, 2015, 19:39 »

QObject: Cannot create children for a parent that is in a different thread.
(Parent is MainWindow(0x1efb70), parent's thread is QThread(0x3b5928), current thread is QThread(0x405f70)
До этого очередь дойдет, то (предполагаю) еще одна проблема или ошибка. Но сейчас надо до конца разобраться с qApp. Вот Вы вставили 2 печати qApp - одну в приложении, сразу после создания QApplication. и вторую в dll. Какая из них первая в консоли?


Гениально! Что интересно, если прям сразу после:

QCoreApplication a(argc, argv);

и так и так:
Calc *mc = new Calc(&a);
Calc *mc = new Calc(qApp);

Обе работают, а когда создаю класс, в котором поток и в потоке выполняю

Calc *mc = new Calc(qApp);

Не работает...

Сегодня нужно уже бежать, завтра с утра продолжу, протестирую, может что упустил, обязательно напишу!

Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #25 : Декабрь 03, 2015, 10:45 »

Гениально! Что интересно, если прям сразу после:

QCoreApplication a(argc, argv);

и так и так:
Calc *mc = new Calc(&a);
Calc *mc = new Calc(qApp);

Обе работают, а когда создаю класс, в котором поток и в потоке выполняю

Calc *mc = new Calc(qApp);

Не работает...
Т.е. то что выше уже несколько раз постилось
Цитировать
QObject: Cannot create children for a parent that is in a different thread.
нам как бы по-фигу!
Действительно Гениально!, Карл!

Для чего Calc-у вообще нужен родитель?
Записан

Qt 5.11/4.8.7 (X11/Win)
freebsdd
Гость
« Ответ #26 : Декабрь 03, 2015, 13:58 »

Гениально! Что интересно, если прям сразу после:

QCoreApplication a(argc, argv);

и так и так:
Calc *mc = new Calc(&a);
Calc *mc = new Calc(qApp);

Обе работают, а когда создаю класс, в котором поток и в потоке выполняю

Calc *mc = new Calc(qApp);

Не работает...
Т.е. то что выше уже несколько раз постилось
Цитировать
QObject: Cannot create children for a parent that is in a different thread.
нам как бы по-фигу!
Действительно Гениально!, Карл!

Для чего Calc-у вообще нужен родитель?


Да ладно Вам издеваться... После долго поиска проблемы, когда находится решение, чувство радости и восторга. Я так не хотел парсинг свой писать - это ж велосипед на костылях (или из костылей), не люблю костыли, ужас просто, поэтому очень рад решению!!!

Несколько раз постил - объясню - код я вставил, для наглядности, например, если я скажу вот в том то коде то то или вставлю кусочек маленький кода (я ж его изменил уже), сразу видно, только из за этого.


1. Calc-у нужен родитель, чтоб не было хаоса в программе, всё от одного, создался батя, у него детишки, для управления и управлению памятью, чтоб утечки не было, прекратил работу родителя, прекратились и потомки;

2. Кстати, нашёл проблему о которой вчера я, почему у меня после QCoreApplication - выполняется, а в потоке нет, нашёл решение, но не понял, почему так,

Файл .PRO
Код:
win32: LIBS += -L$$PWD/../../dll/calc/build-Calc-Desktop_Qt_5_5_0_MSVC2012_32bit-Release/release/ -lCalc
#win32: LIBS += -L$$PWD/../../dll/calc/build-Calc-Desktop_Qt_5_5_0_MSVC2012_32bit-Debug/debug/ -lCalc

Скажите пожалуйста, когда я в режиме отладки(debug) выпускаю библиотеку, в библиотеке присутствует qApp, а когда в режиме выпуска(release) - qApp отсутствует. почему так?


Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #27 : Декабрь 03, 2015, 14:11 »

Скажите пожалуйста, когда я в режиме отладки(debug) выпускаю библиотеку, в библиотеке присутствует qApp, а когда в режиме выпуска(release) - qApp отсутствует. почему так?
Потому что qApp - это макрос
Код
C++ (Qt)
#define qApp QCoreApplication::instance()
Записан

Qt 5.11/4.8.7 (X11/Win)
freebsdd
Гость
« Ответ #28 : Декабрь 03, 2015, 14:28 »

Скажите пожалуйста, когда я в режиме отладки(debug) выпускаю библиотеку, в библиотеке присутствует qApp, а когда в режиме выпуска(release) - qApp отсутствует. почему так?
Потому что qApp - это макрос
Код
C++ (Qt)
#define qApp QCoreApplication::instance()

А в итоге то какую библиотеку(*.dll) использовать в приложении в "промышленности", которая выпущена в режиме отладки или выпуска?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #29 : Декабрь 03, 2015, 14:47 »

1. Calc-у нужен родитель, чтоб не было хаоса в программе,
Нужен так нужен, но назначая родителем QApplication Вы без нужды нарываетесь на возможные проблемы в деструкторе.  

Скажите пожалуйста, когда я в режиме отладки(debug) выпускаю библиотеку, в библиотеке присутствует qApp, а когда в режиме выпуска(release) - qApp отсутствует. почему так?
Потому что либа схватила одну QtCore, в приложение - другую. Ну и понеслась "моя твоя не понимай". Лучше давать дебажной либе др имя, обычно добавляют "d"
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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