zlib, построение из исходников с помощью MSVS2022.

Где брать.

Адрес: https://github.com/madler/zlib

Клонируем: 

d:\Cpp\Lib>git clone https://github.com/madler/zlib

Построение.

Открываем папку D:\Cpp\Lib\zlib\contrib\vstudio\vc14, в папке - решение zlibvc.sln, открываем в MSVS.

Win32.

Активизируем конфигурацию ReleazeWithoutASM, Win32.

Строим решение: жмем F7. В результате, в папке D:\Cpp\Lib\zlib\contrib\vstudio\vc14\x86 создается три директории:

  1. ZlibDllReleaseWithoutAsm - тут .dll и .lib для динамической сборки.
  2. ZlibStatReleaseWithoutAsm - тут .lib для статической сборки. 
  3. TestZlibReleaseWithoutAsm - тут тест.

Win64

Активизируем конфигурацию ReleazeWithoutASM, Win64.

Строим решение: жмем F7. В результате, в папке D:\Cpp\Lib\zlib\contrib\vstudio\vc14\x64 создается три директории:

  1. ZlibDllReleaseWithoutAsm - тут .dll и .lib для динамической сборки.
  2. ZlibStatReleaseWithoutAsm - тут .lib для статической сборки. 
  3. TestZlibReleaseWithoutAsm - тут тест.

Замечание.

По умолчанию определен макрос ZLIB_WINAPI (в свойствах проекта Configuration Properties - C/C++ - Preprocessor - Preprocessor Definitions), это означает, что библиотека будет построена с опцией WINAPI, т.е., stdcall. Если убрать определение ZLIB_WINAPI, библиотека строится с соглашением о cdecl.  В приложениях,  использующие ZLIB, должно быть такое же определение макроса ZLIB_WINAPI, как и проекте построения библиотеки.

Тестирование.

Открываем подпапку (в папках x86 и x64)  TestZlibReleaseWithoutAsm, в командной строке набираем 
testzlib.exe testzlib.pdb
... наблюдаем что-то вроде:
file testzlib.pdb read, 765952 bytes
total compress size = 136513, in 24 step
time = 31 msec = 0.031000 sec
defcpr time QP = 19 msec = 0.019000 sec
defcpr result rdtsc = 43c960f

total uncompress size = 765952, in 24 step
time = 0 msec = 0.000000 sec
uncpr  time QP = 0 msec = 0.000000 sec
uncpr  result rdtsc = 7b190d

compare ok

Использование.


Статическая сборка.


В проект включить заголовочный файл zlib.h, определить макрос ZLIB_WINAPI (или не определять, если библиотека была построена без определения этого макроса). Добавить в опции линковщика входной файл zlibstat.lib.

Динамическая сборка.

В проект включить заголовочный файл zlib.h, определить макрос ZLIB_WINAPI (или не определять, если библиотека была построена без определения этого макроса). Добавить в опции линковщика входной файл zlibwapi.lib.
Дополнительно, в выходной каталог проекта (там, где создается исполняемый файл) поместить файл zlibwapi.dll.

Комментарии

Популярные сообщения из этого блога

ZeroMQ (static) для Windows и Linux