LINUX.ORG.RU

Qt сборка проекта


0

1

Всем привет, очень нужна помощь

Проект следующий

kernel - исполняемый, через qpluginloader грузит main_window: main_window - плагин (главное окно)? через qlugin_loader грузит различные плагины для работы: plugin1 ... pluginN - плагины, несущие бизнес логику приложения.

Ситуация следующая. Ядро загружается, выкачивает обновления, если они были (т.е. сами плагины) и запускает главный плагин main_window. Плагин main_window в зависимости от настроек загружает различные плагины для работы. Все это делается в реалтайме. Разработку вел на Linux Mint. Версия Qt 5.3.1.

Теперь пришло время собрать все под окнами. Открыл креатор, открыл все проекты, скомпилил (все без ошибки и с первого раза). Запускаю kernel, он грузится, что то выводит, но вот загрузить главный плагин не может со словами

Cannot load library path_to_plugin_main_window.dll не найден указанный модуль
После сборки дерево проектов такое
./app.exe
  log/
  plugins/
    libmain_window.a
    main_window.dll
    lib/
       libcommon.a
       common.dll
    components/
       component1/
          libcomponent1.a
          component1.dll
       ...
Под линухом все работает. Я посмотрел зависимости main_window.dll там не оказалось qt библиотек а так же dcomp.dll и библиотек msvcr... (хотя они стоят у меня и ядро загружается)

Кто подскажет куда мне смотреть? З.Ы. Все плагины юзают либу common.dll

Ответ на: комментарий от UVV

Я же вроде как нарисовал дерево объектов... /plugins/main_window.dll, но в коде было прописано так: /plugins/main_window.

После долгих мучений я скопировал все плагины в корневую папку программы и все наконец то завелось. Однако выяснились некоторые проблемы: Самое главное, то, что QObject::connect не может теперь найти сигналы объектов, но только в том случае, если я свой сигнал определил в классе, унаследованном от QObject или его детей, и эта проблема касается только нового синтаксиса, т.е.

connect(btn, &QPushButton::clicked, this, &MainWindow::close);
Эта ситуация работает, а вот эта:
connect(obj, &MyObject::mySignal, this, &MainWindow::close);
не работает с ошибкой

qobject connect signal not found

А если заменить этот синтаксис на старый с макросами SIGNAL и SLOT, то все работает

Но этот вопрос уже для новой темы

energyclab ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.