libzip с Visual Studio 2010

Есть ли документация для компиляции libzip для Visual Studio 2010? Все, что я видел на веб-сайте libzip, и Google не дали результатов.

8 ответов

Решение

Редактировать:

Прежде чем приступить к ответу, представленному здесь, кажется, что это больше не проблема, описанная в ответе @Thomas Klausner ниже.


Следующее должно дать вам решение VS10:

  1. Если вы еще этого не сделали, установите CMake

  2. Загрузите и распакуйте zlib, например, в C:\devel, Ссылки для скачивания находятся примерно на полпути вниз по главной странице. В настоящее время это обеспечивает zlib версии 1.2.7.

    • Чтобы обойти эту ошибку CMake, которая касается только 64-битной Windows, добавьте

      if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND MSVC)
        set_target_properties(zlibstatic PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")
      endif()
      

      до конца C:\devel\zlib-1.2.7\CMakeLists.txt

  3. Загрузите и распакуйте libzip, например, в C:\devel

  4. В командной строке VS10cd C:\devel\zlib-1.2.7

  5. mkdir build && cd build

  6. cmake .. -G"Visual Studio 10" -DCMAKE_INSTALL_PREFIX="C:\devel\installed\zlib" Это устанавливает путь установки C:\devel\installed\zlib а не по умолчанию C:\Program Files\zlib, Для 64-битной Windows используйте "Visual Studio 10 Win64" как -G параметр.

  7. msbuild /P:Configuration=Debug INSTALL.vcxproj

  8. msbuild /P:Configuration=Release INSTALL.vcxproj

  9. cd C:\devel\libzip-0.10.1

  10. mkdir build && cd build

  11. cmake .. -G"Visual Studio 10" -DCMAKE_PREFIX_PATH="C:\devel\installed\zlib" Установите путь к тому месту, где вы установили zlib, чтобы CMake мог найти включаемые файлы и библиотеки zlib. Опять же, для 64-битной Windows используйте "Visual Studio 10 Win64" как -G параметр.

Это должно привести к C:\devel\libzip-0.10.1\build\libzip.sln, Похоже, в коде есть несколько специфичных для POSIX проблем, но, надеюсь, их будет довольно легко решить (например, в zipconf.h). #include <inttypes.h> необходимо заменить на #include <stdint.h>; Есть некоторые snprintf звонки, требующие замены, например _snprintf).

Я не могу комментировать, так что просто в дополнение к ответу Фрейзера: в последние дни последняя версия репозитория libzip должна компилироваться на VS без дополнительных исправлений. Пожалуйста, попробуйте и сообщите разработчикам, если части все еще отсутствуют.

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

Вы можете удалить ALL_BUILD, ZERO_CHECK, INSTALL и PACKAGE, и он будет прекрасно работать без каких-либо ошибок компоновки или ошибок Linux.

Использование libzip-1.0.1, zlib-1.2.8 и VS Community 2013.

Добавлено в путь:

C: \ Program Files (x86) \ CMake \ bin; C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

Строка Cmake стала:

cmake .. -G"Visual Studio 12 Win64" -DCMAKE_INSTALL_PREFIX="C:\devel\installed\zlib"

devel \ libzip-1.0.1 \ lib \ zip_source_filep.c: 189 изменено:

mask = umask(S_IXUSR | S_IRWXG | S_IRWXO);

чтобы:

mask = umask(_S_IREAD | _S_IWRITE);

С помощью

  • переменная окружения %ZLIB_DIR% для пути к zlib-1.2.8,
  • %LIBZIP_DIR% для пути к libzip-1.0.1
  • VS 2015 Express Edition, и
  • файл %LIBZIP_DIR%/lib/zip_source_filep.c исправлено в соответствии с http://hg.nih.at/libzip/rev/80457805a1e7,

процесс сборки zlib и libzip становится таким:


Здание злиб

> cd /d %ZLIB_DIR% && md build & cd build
> cmake .. -G"Visual Studio 14 2015 Win64"- DCMAKE_INSTALL_PREFIX="%ZLIB_DIR%"
> msbuild /P:Configuration=Debug INSTALL.vcxproj
> msbuild /P:Configuration=Release INSTALL.vcxproj


Сборка libzip

> cd /d %LIBZIP_DIR% && md build & cd build
> cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_PREFIX_PATH="%ZLIB_DIR%"
> msbuild /P:Configuration=Debug ALL_BUILD.vcxproj
> msbuild /P:Configuration=Release ALL_BUILD.vcxproj


Готово!

(Как видите, @MikeLischke, CMake действительно иногда работает из коробки)

В текущей версии zlib есть вклад для этого:

zlib-1.2.8\contrib\vstudio\vc10\zlibvc.sln

Я получил ошибку при загрузке, потому что на моей машине была недопустимая конфигурация, но об этом позаботилась перекомпиляция. Мне также пришлось изменить свойства проекта>Configuration Properties>Linker>Input>Additional Dependencies для конфигурации отладки изменить zlibwapi.lib в zlibwapid.lib,

В Visual Studio 2015, Win64:

Если сборка libzip завершилась неудачно с таким сообщением:

Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.8").

Все, что вам нужно сделать, это скопировать сгенерированные zlib.dll/zlibd.zll и zlib.lib/zlibd.lib в верхнюю часть каталога zlib (где находятся файлы.h/.c).

Ответ Кристиана Северина мне очень помог, но потребовались некоторые обновления для VS2019 и 32-разрядной версии:

  • При сборке с VS 2019 необходимо использовать параметр -A, а не «Win64».
  • При сборке с VS 2019 32-разрядный архив - это Win32, а не x86.
  • В разделе "Building zlib" есть опечатка, это должно быть Win64" -DCMAKE_..., с пробелом перед тире

Вот рабочий пример с VS2019 и 32-битной сборкой:

      cd /d %ZLIB_DIR% && md build & cd build
cmake .. -G"Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX="%ZLIB_DIR%" -AWin32
msbuild /P:Configuration=Release INSTALL.vcxproj
cd /d %LIBZIP_DIR% && md build & cd build
cmake .. -G"Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX="%ZLIB_DIR%" -AWin32
msbuild /P:Configuration=Release ALL_BUILD.vcxproj
Другие вопросы по тегам