Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: __Heaven__ от Июль 30, 2015, 11:30



Название: embarcadero c++ builder и Qt
Отправлено: __Heaven__ от Июль 30, 2015, 11:30
Привет, друзья!
Появилась необходимость написать небольшую библиотеку на Qt для дальнейшего использования её в проекте c++ builder.
Кто-нибудь пробовал такую связку уже? Как реализовать?
Пока что вижу, что нужно компилировать Qt с использованием компилятора c++ builder.

Я не силён в линковках, но быть может есть способ создать с помощью mingw или msvc dll, которую можно будет подключить.


Название: Re: embarcadero c++ builder и Qt
Отправлено: kuzulis от Июль 30, 2015, 12:18
Не стоит овчинка выделки (с). (серьезно - бросьте заниматься ерундой  ;) )

если и делать "небольшую библиотеку" - то только из самого билдера для билдера.


Название: Re: embarcadero c++ builder и Qt
Отправлено: xokc от Июль 30, 2015, 13:56
1. Builder-овским компилятором Qt собрать не получится.
2. Единственный вариант - подгружать DLL с Qt в рантайме через LoadLibrary. Там достаточно будет своих нюансов (зависимости этой DLL от собственно Qt и компиляторского рантайма или необходимость использовать статическую сборку, проблемы с отсутствием QApplication и цикла обработки сообщений внутри DLL и, как следствие, неработоспособность сигнал/слотов и т.п.) Всё это решаемо при некотором старании (у меня так Delphi GUI юзает кусок Qt проекта - по историческим причинам получился именно такой "бутерброд"), но...
3. Если речь идет именно о "небольшой библиотеке" - см. предыдущий пост kuzulis, даже добавить к нему нечего :)


Название: Re: embarcadero c++ builder и Qt
Отправлено: Пантер от Июль 30, 2015, 13:57
Если хочется какую-то функциональность сделать на Кьюте, то лучше сделай это отдельным приложением и общайся с ним через stdin/stdout или по сокету.


Название: Re: embarcadero c++ builder и Qt
Отправлено: __Heaven__ от Июль 30, 2015, 14:47
Да дело в том, что нужно сделать библиотеку, которая будет запускать консольное приложение и возвращать его вывод, как char*. Я в c++ builder не сидел, а тот человек, кому нужен функционал - не может реализовать его тамошними инструментами... Что-то не клеится...
Вариант через QLibrary, не совсем понятен. Можно подробнее плз.


Название: Re: embarcadero c++ builder и Qt
Отправлено: __Heaven__ от Июль 30, 2015, 15:01
проблемы с отсутствием QApplication и цикла обработки сообщений внутри DLL и, как следствие, неработоспособность сигнал/слотов
Можно создать свой экземпляр QApplication внутри dll. Проверял, слоты работают.


Название: Re: embarcadero c++ builder и Qt
Отправлено: xokc от Июль 30, 2015, 16:10
Я в c++ builder не сидел, а тот человек, кому нужен функционал - не может реализовать его тамошними инструментами... Что-то не клеится...
Не очень понятно, что именно там может "не клеиться". http://stackoverflow.com/questions/9119999/getting-output-from-a-shell-dos-app-into-a-delphi-app (http://stackoverflow.com/questions/9119999/getting-output-from-a-shell-dos-app-into-a-delphi-app)

Вариант через QLibrary, не совсем понятен. Можно подробнее плз.
Делается DLL c Qt (не важно с MSVC или MinGW), которая экспортирует нужные функции. Дальше из Builder приложения делается LoadLibrary и экспортированные функции резолвятся через GetProcAddress. Собственно всё.

Можно создать свой экземпляр QApplication внутри dll. Проверял, слоты работают.
А я и не говорил, что это невозможно. Напротив, утверждал, что при некотором старании всё можно победить. Только стоит ли?


Название: Re: embarcadero c++ builder и Qt
Отправлено: __Heaven__ от Июль 30, 2015, 17:05
Спасибо, будем пробовать


Название: Re: embarcadero c++ builder и Qt
Отправлено: Igors от Июль 31, 2015, 08:08
Можно создать свой экземпляр QApplication внутри dll. Проверял, слоты работают.
Была у меня такая байда - кусок Qt кода в "не Qt" приложении. Да, работало, но был очень рад когда в конце-концов от нее избавился. Событийные циклы (у Qt кода свой, у приложения свой) становятся источником постоянных забот