赞
踩
从http://www.zlib.net/下载http://zlib.net/zlib-1.2.8.tar.gz。
解压后得到源码。需要自己修改zconf.h.in文件为zconf.h。
github下载源码,不需要对zconf.h.in改名。
github代码库网址:https://github.com/madler/zlib/
cd d:\git
git clone https://github.com/madler/zlib.git
cd d:\git\zlib
rem 切换出稳定版本代码
git checkout v1.2.8 -b bv1.2.8
zlib代码提供了多种编译方式。建议使用CMake工具编译。
从http://zlib.net/zlib-1.2.8.tar.gz解压得到的,需要复制文件zconf.h.in为zconf.h。
找到zlib-1.2.8\contrib\vstudio目录,复制一个vc11为vc14。使用vs2015打开vc14中的sln。并转化为vs2015的工程类型。
出现如下错误信息:
错误 1 error LNK2026: 模块对于 SAFESEH
映像是不安全的。 D:\svn\CLib\zlib-1.2.8\contrib\vstudio\vc14\match686.obj testzlib
错误 6 error LNK1118:
“VERSION”语句中的语法错误 D:\svn\CLib\zlib-1.2.8\contrib\vstudio\vc14\zlibvc.def 4 1 zlibvc
解决方法:
找到zlibvc工程的zlibvc.def文件,在VERSION 1.2.8行前加入注释“; ”。
; VERSION 1.2.8
在zlibvc和 testzlib 工程上,右键属性菜单=>【连接器】 =>【命令行】 =>【其他选项】 的输入框内加入 /SAFESEH:NO
。如果里面有内容,要在/前面加入空格。
修改后,debug版本可以编译通过。
Release版本做相同修改即可。
ReleaseWithoutAsm版本不需要修改SAFESEH。
编译后的内容在zlib-1.2.8\contrib\vstudio\vc14\x86目录下,如下:
MiniUnzipDebug
MiniUnzipRelease
MiniZipDebug
MiniZipRelease
TestZlibDebug
TestZlibDllDebug
TestZlibDllRelease
TestZlibRelease
TestZlibReleaseWithoutAsm
ZlibDllDebug
ZlibDllRelease
ZlibDllReleaseWithoutAsm
ZlibStatDebug
ZlibStatRelease
ZlibStatReleaseWithoutAsm
如果需要调试了解内容,可以添加工程,使用zlib-1.2.8\examples的文件调试了解使用方法。
我们在实际工程中,只需要使用zlib-1.2.8/zlib.h,zlib-1.2.8/zconf.h两个头文件,和刚才编译好的zlibwapi.lib(静态引入)或者zlibwapi.dll(动态引入)。
出于调试需要,可以把zlibwapi.pdb zlibwapi.map 等文件也引入,一般不需要。
习惯上,我们会把zlibwapi.dll编译成zlib.dll,把zlibwapi.lib编译成zlib.lib。
如果出现 如下错误,对比x64位编译的Debug和Release的 zlibvc
工程的 [属性] --> [生成事件] --> [生成前事件] --> [命令行] 的内容,把Debug的内容修改为和Release一致即可。(Debug
版本的路径中多了 contrib
目录)
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 MSB3073 命令“cd ..\..\contrib\masmx64
bld_ml64.bat
:VCEnd”已退出,代码为 9009。 zlibvc C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets 145
::Debug 版本的路径中多了 contrib 目录
cd ..\..\contrib\masmx64
bld_ml64.bat
::Releae
cd ..\..\masmx64
bld_ml64.bat
zlib提供了CMake编译文件。我们可以使用CMake工具来编译。
我安装了[cmake-3.4.0-win32-x86.exe]版本。(https://cmake.org/files/v3.4/cmake-3.4.0-win32-x86.exe)
3.2.1 配置CMake源码路径和编译目标路径。
3.2.2 点击 Configure 按钮,生成配置信息。
创建目标目录。
选择vs版本和编译类型后,点击 Finish 按钮。
Visual Studio 14 2015
Use default native compilers
默认exe文件输入目录和库文件输出目录都没指定:
EXECUTABLE_OUTPUT_PATH
LIBRARY_OUTPUT_PATH
默认生成了install的各个目录。
点击 Generate 按钮,生成工程文件。
3.3.1 用vs2015打开d:\git\zlib\build\x86\zlib.sln文件。
3.3.2 编译。编译成功。
3.3.3 把编译好的Release文件安装到系统。
切换到release版本,编译ALL_BUILD工程后,再单独编译INSTALL工程。把release版本安装到系统中。提示命令行执行错误 MSB3073
。这是因为默认向C:/Program Files (x86)目录拷贝文件,没有权限。
3.3.4 关闭vs2015,使用管理员权限启动vs2015,然后在编译INSTALL工程。安装成功。
D:\git\zlib>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"
D:\git\zlib>nmake -f win32/Makefile.msc
这样生成的obj文件和目标文件(.dll,.lib,.exe)都在d:\git\zlib目录下,可以使用 nmake -f win32/Makefile.msc clean
命令清楚。参考zlib\win32\README-WIN32.txt说明文件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。