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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: embarcadero c++ builder и Qt  (Прочитано 7629 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Июль 30, 2015, 11:30 »

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

Я не силён в линковках, но быть может есть способ создать с помощью mingw или msvc dll, которую можно будет подключить.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Июль 30, 2015, 12:18 »

Не стоит овчинка выделки (с). (серьезно - бросьте заниматься ерундой  Подмигивающий )

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

ArchLinux x86_64 / Win10 64 bit
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #2 : Июль 30, 2015, 13:56 »

1. Builder-овским компилятором Qt собрать не получится.
2. Единственный вариант - подгружать DLL с Qt в рантайме через LoadLibrary. Там достаточно будет своих нюансов (зависимости этой DLL от собственно Qt и компиляторского рантайма или необходимость использовать статическую сборку, проблемы с отсутствием QApplication и цикла обработки сообщений внутри DLL и, как следствие, неработоспособность сигнал/слотов и т.п.) Всё это решаемо при некотором старании (у меня так Delphi GUI юзает кусок Qt проекта - по историческим причинам получился именно такой "бутерброд"), но...
3. Если речь идет именно о "небольшой библиотеке" - см. предыдущий пост kuzulis, даже добавить к нему нечего Улыбающийся
« Последнее редактирование: Июль 30, 2015, 14:42 от xokc » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Июль 30, 2015, 13:57 »

Если хочется какую-то функциональность сделать на Кьюте, то лучше сделай это отдельным приложением и общайся с ним через stdin/stdout или по сокету.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Июль 30, 2015, 14:47 »

Да дело в том, что нужно сделать библиотеку, которая будет запускать консольное приложение и возвращать его вывод, как char*. Я в c++ builder не сидел, а тот человек, кому нужен функционал - не может реализовать его тамошними инструментами... Что-то не клеится...
Вариант через QLibrary, не совсем понятен. Можно подробнее плз.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Июль 30, 2015, 15:01 »

проблемы с отсутствием QApplication и цикла обработки сообщений внутри DLL и, как следствие, неработоспособность сигнал/слотов
Можно создать свой экземпляр QApplication внутри dll. Проверял, слоты работают.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #6 : Июль 30, 2015, 16:10 »

Я в c++ builder не сидел, а тот человек, кому нужен функционал - не может реализовать его тамошними инструментами... Что-то не клеится...
Не очень понятно, что именно там может "не клеиться". 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. Проверял, слоты работают.
А я и не говорил, что это невозможно. Напротив, утверждал, что при некотором старании всё можно победить. Только стоит ли?
« Последнее редактирование: Июль 30, 2015, 19:03 от xokc » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Июль 30, 2015, 17:05 »

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

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Июль 31, 2015, 08:08 »

Можно создать свой экземпляр QApplication внутри dll. Проверял, слоты работают.
Была у меня такая байда - кусок Qt кода в "не Qt" приложении. Да, работало, но был очень рад когда в конце-концов от нее избавился. Событийные циклы (у Qt кода свой, у приложения свой) становятся источником постоянных забот
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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