13

是否有为 Visual Studio 2010 编译 libzip 的文档?我从 libzip 网站和 Google 看到的所有内容都没有返回任何结果。

4

8 回答 8

29

编辑:

在开始此处提供的答案之前,这似乎不再是@Thomas Klausner 下面的答案的问题。


以下应该为您提供 VS10 解决方案:

  1. 如果您还没有这样做,请安装CMake

  2. 下载zlib并将其解压缩到例如C:\devel. 下载链接位于主页的一半左右。目前这提供了 zlib 版本 1.2.7。

    • 要解决此仅影响 64 位 Windows 的CMake 错误,请添加

      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到 egC:\devel

  4. VS10 命令提示符下cd 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)。

于 2012-05-09T00:33:11.460 回答
4

我无法发表评论,所以除了弗雷泽的回答:在过去的几天里,libzip 的最新存储库版本应该在 VS 上编译而无需额外的补丁。请尝试一下,让开发人员知道是否仍然缺少部件。

于 2012-09-02T20:47:46.970 回答
3

无法评论上面的答案,但试图让它工作,最后发现配置属性下的输出目录和调试中的命令。

您可以删除 ALL_BUILD、ZERO_CHECK、INSTALL 和 PACKAGE,它将构建良好,而不会出现任何链接错误或 linux 特定错误。

于 2014-05-28T15:50:29.123 回答
3

使用 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);
于 2015-05-14T19:04:51.607 回答
2

使用

  • zlib-1.2.8 路径的环境变量%ZLIB_DIR%
  • %LIBZIP_DIR%对于 libzip-1.0.1 的路径
  • VS 2015 速成版,和
  • %LIBZIP_DIR%/lib/zip_source_filep.c根据http://hg.nih.at/libzip/rev/80457805a1e7修补的文件,

构建 zlib 和 libzip 的过程变成了这样:


构建 zlib

> 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 有时确实可以开箱即用......)

于 2015-12-11T12:52:22.603 回答
0

在当前的 zlib 版本中,对此有一个贡献:

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

我在加载时遇到错误,因为其中一个配置在我的机器上无效,但重新编译解决了这个问题。我还必须更改项目属性>Configuration Properties>Linker>Input>Additional Dependencies以将 Debug 配置更改zlibwapi.libzlibwapid.lib.

于 2016-03-16T16:19:36.307 回答
0

在 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 文件所在的位置)。

于 2016-12-31T21:06:18.523 回答
0

Christian Severin 给出的答案对我帮助很大,但需要对 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
于 2021-08-23T15:33:17.267 回答