libzip with Visual Studio 2010
libzip with Visual Studio 2010
如何为 Visual Studio 2010 编译 libzip?
编辑:
在开始这里提供的答案之前,似乎这可能不再是克劳斯纳下面回答@Thomas的问题。
以下内容应该为您提供VS10解决方案:
-
如果尚未安装,请安装 CMake
-
下载并解压缩 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 的末尾
-
-
下载并解压缩 libzip 以例如
C:devel
-
在 VS10 命令提示符下,
cd C:develzlib-1.2.7
-
mkdir build && cd build
-
cmake .. -G"Visual Studio 10" -DCMAKE_INSTALL_PREFIX="C:develinstalledzlib"
这会将安装路径设置为C:develinstalledzlib
而不是默认C:Program Fileszlib
。 对于 64 位 Windows,请使用"Visual Studio 10 Win64"
作为-G
参数。 -
msbuild /P:Configuration=Debug INSTALL.vcxproj
-
msbuild /P:Configuration=Release INSTALL.vcxproj
-
cd C:devellibzip-0.10.1
-
mkdir build && cd build
-
cmake .. -G"Visual Studio 10" -DCMAKE_PREFIX_PATH="C:develinstalledzlib"
将路径设置为安装 zlib 的位置,以便 CMake 可以找到 zlib 的包含文件和库。 同样,对于 64 位 Windows,请使用"Visual Studio 10 Win64"
作为-G
参数。
这应该会导致C:devellibzip-0.10.1buildlibzip.sln
。 看起来代码中有一些特定于POSIX的问题,但它们应该相当容易解决(例如,在zipconf.h中#include <inttypes.h>
需要替换为#include <stdint.h>
;有一些snprintf
调用需要替换为_snprintf
(。
我不能发表评论,所以除了弗雷泽的回答之外:在最后几天,libzip 的最新存储库版本应该在没有额外补丁的情况下在 VS 上编译。请尝试一下,如果零件仍然丢失,请让开发人员知道。
无法评论上面的答案,但试图让它工作,最终发现配置属性下的输出目录和调试中的 comand。
您可以删除ALL_BUILD,ZERO_CHECK,安装和PACKAGE,它将构建良好,没有任何链接错误或Linux特定错误。
> 使用 libzip-1.0.1、zlib-1.2.8 和 VS Community 2013。
添加到路径:
C:\程序文件 (x86(\CMake\bin;C:\Windows\Microsoft.NET\Framework64\v4.0.30319
cmake 线变为:
cmake .. -G"Visual Studio 12 Win64" -DCMAKE_INSTALL_PREFIX="C:develinstalledzlib"
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-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
构建库压缩
> 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.8contribvstudiovc10zlibvc.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文件所在的位置(。
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
- 无法在 Visual Studio 2010 中构建 Allegro C++ 程序
- Visual Studio 2013,错误 MSB8020:找不到 Visual Studio 2010 的生成工具
- std::array initalization with Visual Studio 2010
- 将代码从 32 位迁移到 64 位时出现问题 Visual Studio 2010
- 在 Visual Studio 2010(及更高版本)中定义包含或链接路径变量的位置
- Visual Studio 2010 单元测试:无法识别引用的项目类
- Visual Studio 2010 - C++ 致命错误 LNK1120: 1 个未解析的外部
- C /FORTRAN项目由Visual Studio 2010/Intel 2013创建,将不会在Visual St
- 如何使 Visual Studio 2010 警告未使用的变量
- 如何解决错误 C2719 在 Visual Studio 2010 C++ 中不存在代码行时
- 按值传递的参数在 Visual Studio 2010, C++ 的调试器中显示为通过引用传递
- Visual Studio 2010 是否执行零初始化
- 无法使用 Visual Studio 2010 和 Qt 版本 4.8.0 创建"Qt Gui Application"
- 如何将Visual studio 2010升级到2015版本
- Visual Studio 2010 调用 _locking() 失败 (errno = 22) 当文件指针高于 (2^
- Qt 4.8 与 Visual Studio 2010 的链接错误
- Visual Studio(整个过程)2010无法升级较旧的解决方案
- OpenSSL on Windows and Visual Studio 2010
- 在Visual Studio 2010中使用大型查找表的链接限制使用代码库的限制
- Visual Studio 2010:致命错误C1189:#Error