LINUX.ORG.RU

Создание библиотеки QT


0

0

Создал класс для отображения на основе QT и QWT.
1. Как мне оформить этот класс в виде подключаемой библиотеки *.so?
2. Как статически в нее залинковать QT и QWT, что бы они не
требовались при работе на других машинах?

1. http://mech.math.msu.su/~zubr/library.html gcc можно изменить на g++.
2. Сначала курим трубку и думаем о LGPL. Потом собираем Qt из сырцов с параметром -static, и получаем libqt*.a. Линкуем со своей библиотекой.

k0l0b0k ★★
()

> Как мне оформить этот класс в виде подключаемой библиотеки *.so?

какая система для сборки используется? Написши в файле *.pro

TEMPLATE = lib

И это, QT - это Quick Time. Я правильно понимаю, что речь идёт не про него? Кроссплатформенный тулкит называется Qt.

name_no ★★
()

> 2.

А смысл? Все равно программа которая будет использовать твой класс, по любому будет требовать Qt. Так какой смысл 2 раза тащить библиотеку?

SSZB
()
Ответ на: комментарий от SSZB

> программа которая будет использовать твой класс, по любому будет требовать Qt

Совершенно необязательно. Если корректно спроектировать интерфейсы, внешняя программа и знать не будет про какой-то там Qt.

one_more_hokum ★★★
()
Ответ на: комментарий от one_more_hokum

> Совершенно необязательно. Если корректно спроектировать интерфейсы, внешняя программа и знать не будет про какой-то там Qt.

ИМХО это изврат. Есть примеры того как Qt-виджет можно впихнуть в приложение написанное с использованием GTK?

SSZB
()
Ответ на: комментарий от SSZB

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

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

Это если идет речь о сборке, то таки да. А как все это будет работать в рантайме? Например, у qt и gtk разные (несовместимые) циклы обработки событий, одна библиотека рисует через opengl другая через Хрензнаетчто и тд. и тп. Короче, если речь идет не только о возможности собрать, но еще и успешно запустить, придется заняться извращением по скрещиванию ежа у ужом, и просто разгородить все интерфейсом ИМХО не получиться.

SSZB
()

Я использую библиотеку Qt для gui. Хотелось бы после компиляции получить бинарь который будет работать на другой машине (тоже Linux, но на ней возможно не установлена Qt)! Т.е. скомпилить свой проект таким образом что бы все подгружаемые либы были бы уже в нем, или в директории где он находится! Можно ли так сделать?

minipooh
() автор топика
Ответ на: комментарий от minipooh

Можно! 2 варианта:

1) Как описано в первом посте: "собираем Qt из сырцов с параметром -static, и получаем libqt*.a. Линкуем со своей библиотекой. "

2) Можно скинуть нужные .so(.dll) в папку с твоей программой. По крайней мере под Windows это работает.

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