Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: работа с Zlib
DF2 :: ФОРУМЫ > Основные форумы > Софт и железо > Программирование / Coding
Shurup
Нужна помощь от людей, работавших с zlib-архивами (трешечные LODы один из примеров).
Интересует все: от подключения библиотеки к проекту до компиляции и распространения готового приложения.

В гугл не посылать. Спасибо.
Bourn
для того чтобы хотябы что-то описать надо что-то иметь, а не учить человека с нуля компилировать проекты и собирать их, ну и т.п., я просто о том что надо хоть какую-то базу для того чтобы было желание отвечать на вопрос
вот пример из гугла tongue.gif
http://cppbuilder.ru/articles/0002.php
Shurup
Трабл в том, что работаю с bulider 6й версии, собираю и компилю родными средствами среды с настройками по умолчанию.
Попытался скачать библиотеки с http://www.zlib.net/ Содержимое архива повергло в панику:
CODE
amiga\
as400\
contrib\
doc\
examples\
msdos\
nintendods\
old\
qnx\
test\
watcom\
win32\
adler32.c
ChangeLog
CMakeLists.txt
compress.c
configure
crc32.c
crc32.h
deflate.c
deflate.h
FAQ
gzclose.c
gzguts.h
gzlib.c
gzread.c
gzwrite.c
INDEX
infback.c
inffast.c
inffast.h
inffixed.h
inflate.c
inflate.h
inftrees.c
inftrees.h
make_vms.com
Makefile
Makefile.in
README
treebuild.xml
trees.c
trees.h
uncompr.c
zconf.h
zconf.h.cmakein
zconf.h.in
zlib.3
zlib.h
zlib.map
zlib.3.pdf
zlib.pc.cmakein
zlib.pc.in
zlib2ansi
zutil.c
zutil.h


Может я чего-то не понимаю, но кажется, что 3 метра текстовых файлов - многовато для реализации алгоритма сжатия.
Разумеется что ченж-лог, примеры и "документацию" можно отбросить, но и без них в этой свалке много лишнего.

Теперь собственно вопрос, для тех, кто работал с ZLIB:
- Какие из этих файлов нужно подключать (и как, если это чем-то отличается от обычного #include "filename.h")
- какие из этих файлов нужно распространять с исходниками (чтоб все проект запустился на другом компе)
- Какие либы нужно будет распростанять со скомпилированным exe?
- есть ли какие-то тонкости компиляции
tolich
Цитата(Shurup @ 19 Jul 2012, 18:40) *
- Какие из этих файлов нужно подключать (и как, если это чем-то отличается от обычного #include "filename.h")
#include "zlib.h"
К проекту добавить соответствующий 'zlib.lib'.
Цитата(Shurup @ 19 Jul 2012, 18:40) *
- какие из этих файлов нужно распространять с исходниками (чтоб все проект запустился на другом компе)
Насколько я понимаю, все.
Цитата(Shurup @ 19 Jul 2012, 18:40) *
- Какие либы нужно будет распростанять со скомпилированным exe?
Тут всё просто, если zlib собрана статическая, то никакие, если динамическая, то 'zlib.dll'.
Цитата(Shurup @ 19 Jul 2012, 18:40) *
- есть ли какие-то тонкости компиляции
Не припоминаю.

P.S. Вот, стопитсот лет назад делал: Compress.rar, может, почерпнёшь мудрости...
tolich
Suddenly: если используешь Qt, то там есть функции qCompress, qUncompress и qChecksum. laugh.gif
Shurup
в том то и дело, что хочется по максиму отвязаться от всяческих тонкостей ИДЕ и фреймворков. Хочется нормального С++.
В моем понимании "нормального" - это когда скачиваешь библиотеку, подключаешь и используешь ее возможности.
Я в не могу понять смысла предварительной сборки .lib, причем разной для разных IDE.
И чем глубже погружаюсь - тем все печальнее выглядит.

Цитата
К проекту добавить соответствующий 'zlib.lib'.

Соответствующий?
Цитата(tolich @ 19 Jul 2012, 19:42) *
>> есть ли какие-то тонкости компиляции
Не припоминаю.

>> Какие либы нужно будет распростанять со скомпилированным exe?
Тут всё просто, если zlib собрана статическая, то никакие, если динамическая, то 'zlib.dll'.

Для меня это взаимоисключающие параграфы ответы. sorry.gif
tolich
Цитата(Shurup @ 20 Jul 2012, 15:41) *
Я в не могу понять смысла предварительной сборки .lib, причем разной для разных IDE.
Не IDE, компиляторов/редакторов связей.
Цитата(Shurup @ 20 Jul 2012, 15:41) *
Цитата
К проекту добавить соответствующий 'zlib.lib'.
Соответствующий?
Соответствующий используемому тобой компилятору, способу сборки, etc. В Compress я собираю zlib в виде dll, соответственно сам создаю библиотеку импорта, которую и использую.
Цитата(Shurup @ 20 Jul 2012, 15:41) *
Цитата(tolich @ 19 Jul 2012, 19:42) *
>> есть ли какие-то тонкости компиляции
Не припоминаю.
>> Какие либы нужно будет распростанять со скомпилированным exe?
Тут всё просто, если zlib собрана статическая, то никакие, если динамическая, то 'zlib.dll'.

Для меня это взаимоисключающие параграфы ответы. sorry.gif
А для меня это не тонкость. Тонкости это всякие неочевидности, вроде
Цитата
перед подключением windows.h написать #define WIN32_LEAN_AND_MEAN и #define VC_EXTRALEAN
IvanSav
А разве .lib обязательна? Это ж статическая библиотека - можно или линковать к lib-е и получить независимый exe или линковать с .dll и затем выкладывать exe и dll.
Цитата
в том то и дело, что хочется по максиму отвязаться от всяческих тонкостей ИДЕ и фреймворков. Хочется нормального С++.
В моем понимании "нормального" - это когда скачиваешь библиотеку, подключаешь и используешь ее возможности.

Часто можно найти уже скомпиленые либы для популярных ИДЕ. Вот только C++ builder в этот список уже давно не входит.
Линукс тут конечно рвет всех и всякого:
Код
apt-get install zlib1g-dev # ставим либу
g++ main.cpp -lz # линкуем к нужной либе

Цитата
причем разной для разных IDE.

Разве? В Си (а zlib она сишная) интерфейс один и тот же должен быть независимо от ИДЕ.
Цитата
перед подключением windows.h написать #define WIN32_LEAN_AND_MEAN и #define VC_EXTRALEAN

"Это не баг это фича" smile.gif
В windows.h есть, например, такие "фичи" как макросы min и max которые вызывают ошибки на переменных с таким именем, а в случае C++ - еще и при использовании стандартных std::min() и std::max()
tolich
Цитата(IvanSav @ 20 Jul 2012, 19:20) *
Разве? В Си (а zlib она сишная) интерфейс один и тот же должен быть независимо от ИДЕ.
Разные форматы объектных файлов и, соответственно, библиотек.

Цитата(IvanSav @ 20 Jul 2012, 19:20) *
"Это не баг это фича" smile.gif
А кто говорит, что это баг? Это всего лишь неочевидные вещи.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.