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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подключение QuaZip  (Прочитано 7849 раз)
Dark Jedi
Гость
« : Июнь 24, 2016, 18:29 »

Здравствуйте! Уже два дня мучаюсь с подключением библиотеки QuaZip. Вот zlib подключается и работает нормально, а QuaZip сначала пытался подключать через pri файлы в папке библиотеки, потом по вот этой инструкции: http://www.prog.org.ru/topic_25880_0.html . В первом случае все время выдавались ошибки типа undefined reference to _imp_набор_букв_и_цифр. Во втором случае, скачанный CMake, выдавал ошибки на мою установку компилировать под mingw makefiles. Как я понял, это из-за того что он не находит компилятор mingw, поскольку под Visual Studio оно компилирует без ошибок (но мне нужно именно под mingw). Еще где-то  видел, что писали "зачем этот cmake, если qmake более родной и удобный", но это не вариант ибо мои знания о qmake заканчиваются на нажатии кнопки "Запустить qmake" в меню "Сборка" в Qt. Объясните пожалуйста как установить эту библиотеку нормально (ну и, по возможности, в дополнение, как работать с qmake).
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Июнь 26, 2016, 21:12 »

У меня подключено так:

в .pro файле приложения, в инклюде поменять путь до расположения файла quazip.pri библиотеки.
Код:
#QuaZip support

DEFINES += QUAZIP_STATIC
include($$PWD/../3rdparty/quazip/quazip.pri)
LIBS += -lz

#end QuaZip support
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Dark Jedi
Гость
« Ответ #2 : Июнь 27, 2016, 09:32 »

Сделал как вы сказали, в итоге сам класс QuaZip стал виден в файле, где использую его, но почему-то не находятся конструктор и деструктор класса (undefined reference ...), хотя нужные файлы подключены (quazip.h как минимум). И при сборке qmake выдает ошибку "Extra characters after test expression." в файле quazip.pri на строке после подключения всех header'ов (просто пустая строка между подключением header'ов и source файлов), но при компиляции компилятор не обращает внимания на эту ошибку, даже не смотря на то, что это ошибка, а не предупреждение.
« Последнее редактирование: Июнь 27, 2016, 09:45 от Dark Jedi » Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 197


Просмотр профиля
« Ответ #3 : Май 08, 2017, 13:07 »

У меня подключено так: ...
Код:
#QuaZip support

DEFINES += QUAZIP_STATIC
include($$PWD/../3rdparty/quazip/quazip.pri)
LIBS += -lz

#end QuaZip support
Я делал примерно так же. Осталась проблема сказать проекту, где лежат включаемые файлы от zlib (zlib.h и что-то ещё). В линуксе с этим проблем нет, а вот для Windows пришлось городить костыль: включить абсолютный путь к zlib в INCLUDEPATH. Программа собралась, QuaZip работает и вытаскивает всё, что мне нужно, но ясно, что это страшенный костыль, который будет работать только на одной машине.

Есть ли более элегантное решение? Пока из альтернатив вижу только вариант затащить в 3rdpaty ещё и сам zlib и попробовать прикомпоновать статически и его, но я бы не назвал этот вариант элегантным Грустный
« Последнее редактирование: Май 08, 2017, 13:15 от DarkHobbit » Записан

Мои проекты на Qt: DoubleContact, LInvert
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Май 08, 2017, 14:29 »

Есть ли более элегантное решение? Пока из альтернатив вижу только вариант затащить в 3rdpaty ещё и сам zlib и попробовать прикомпоновать статически и его, но я бы не назвал этот вариант элегантным Грустный

Это же Windows. Если хочешь сторонние библиотеки - таскай их с собой.
Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 197


Просмотр профиля
« Ответ #5 : Май 20, 2017, 09:58 »

Это же Windows. Если хочешь сторонние библиотеки - таскай их с собой.
Угу, и нужны-то они только под одну платформу, и обновлять, если что, геморройнее...
В случае zlib ситуация осложняется тем, что Qt её _уже_ таскает с собой, соответственно, плодить сущности решительно не хочется. Поскольку под винду я делаю статическую сборку Qt, я исхитрился: абсолютный путь прописал не абы куда, а к каталогу, где zlib лежит как 3d-party библиотека. То есть инклуд гарантированно соответствует самой библиотеке. Всё замечательно, но:
  • Проект открытый, кому-то может захотеться сделать и динамическую виндосборку. Ему точно придётся резать файл проекта "под себя";
  • Даже при статической сборке абсолютный путь зависит от версии Qt, от диска...
« Последнее редактирование: Май 20, 2017, 10:12 от DarkHobbit » Записан

Мои проекты на Qt: DoubleContact, LInvert
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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