使用Visual Studio 2010的libzip

时间:2012-05-08 23:21:55

标签: c++

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

7 个答案:

答案 0 :(得分:27)

编辑:

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


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

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

  2. 下载zlib并将其解压缩至例如C:\devel。下载链接大约是主页的一半。目前,这提供了zlib版本1.2.7。

    • 要解决仅影响64位Windows的this CMake bug,请添加

      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. 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参数。

  12. 这应该导致C:\devel\libzip-0.10.1\build\libzip.sln。看起来代码中存在一些特定于POSIX的问题,但它们应该很容易解决(例如在zipconf.h中#include <inttypes.h>需要用#include <stdint.h>替换;有一些{{1需要替换的调用,例如snprintf)。

答案 1 :(得分:4)

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

答案 2 :(得分:3)

不能对上面的答案发表评论但是试图让这个工作并最终发现配置属性下的Output目录和调试中的命令。

您可以删除ALL_BUILD,ZERO_CHECK,INSTALL和PACKAGE,它将构建正常,没有任何链接错误或Linux特定错误。

答案 3 :(得分: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);

答案 4 :(得分:2)

使用

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

构建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确实有时会开箱即用......)

答案 5 :(得分:0)

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

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

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

答案 6 :(得分: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文件所在的位置)。