win10下Visual Studio 2015,C++编译zlib

前提安装了visual studio 2015      PS.几乎所有方式,x64的编译都会有点坑,鉴于网上的x86编译方式非常的多,所以不再累赘x86的编译方式

zlib下载源:

官网:http://zlib.net/

下载:http://zlib.net/zlib128.zip

方式一:命令方式

  1、解压zlib128.zip,随便一个地方即可,本人解压在E:\zlib128\zlib-1.2.8,zlib-1.2.8为根目录

  2、这个方式之下,首先需要将visual studio的VC目录就加入到系统的环境变量中,在system的Advanced system settings(高级系统设置),在Advanced(高级)最下方,点击Enviroment Variable(环境变量),System Variables(系统变量)的Path,添加对应的VC目录路径,(Visual Studio不分x86和x64,主要部分安装在Program Files(x86)中)本人的目录为C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC ,添加之后注销或者重启

  3、打开开始菜单,选择Visual Studio 2015文件夹(Visual Studio之后就会有),选择VS2015 x64 Native Tools Command Prompt(VS2015 x64本地命令行工具),(此处注意,很多教程需要使用此工具到zlib-1.2.8的contrib/masmx64下面执行bld_ml64.bat生成inffasx64.obj之类的文件,其实这些步骤是多余的),大家可以注意到zlib-1.2.8根目录下有一个文集爱你家为win32,这个就是编译的关键,打开里面有个文件为Makefile.msc,这个就是nmake需要用到的makefile。用editpad打开文件可以看到如下:

      

    PS.之所以说其他教程的一些工作是多余的,是因为在文件中的如下内容会自动的寻找相关文件,生成对应的obj文件

gvmat64.obj: $(TOP)/contrib\masmx64\gvmat64.asm

inffasx64.obj: $(TOP)/contrib\masmx64\inffasx64.asm

inffas8664.obj: $(TOP)/contrib\masmx64\inffas8664.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h 		$(TOP)/inftrees.h $(TOP)/inflate.h $(TOP)/inffast.h

  接下来,看文件内容,在最开始的注释处就有编译的方式

# Usage:
#   nmake -f win32/Makefile.msc                          (standard build)
#   nmake -f win32/Makefile.msc LOC=-DFOO                (nonstandard build)
#   nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" #         OBJA="inffas32.obj match686.obj"               (use ASM code, x86)
#   nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." #         OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"  (use ASM code, x64)

  于是接下来,在命令行中输入e:跳转到e盘,输入cd E:\zlib128\zlib-1.2.8到根目录,输入nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj",程序就会跑起来,如图:

  至此,已经编译完成,在根目录下会出现相关的结果文件zlib.lib,zlib1.dll,zlib.pdb等等。

  注意,如果补天记系统环境变量,或者不把VC\bin\amd64\ml64.exe拷贝到根目录下的话,运行编译完makefile中的一些必须的32位的obj后就会报错停止如下

提示1:
inffas8664.c
        lib -nologo -out:zlib.lib adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj  gzwrite.obj infback.obj inflate.obj inftrees.obj inffast.obj trees.obj uncompr.obj zutil.obj inffasx64.obj gvmat64.obj inffas8664.obj
inffasx64.obj : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\lib.EXE"”: 返回代码“0x458”
Stop.

提示2:
        ml64 -c -coff -Zi -DASMV -DASMINF -I. ./contrib/masmx64\inffasx64.asm
‘ml64‘ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
NMAKE : fatal error U1077: “ml64”: 返回代码“0x1”
Stop.

方式二:使用visual studio ide进行编译

  1、打开E:\zlib128\zlib-1.2.8\contrib\vstudio\vc11,双击zlibvc.sln,Visual Studio 2015就会将其打开,但是这个sln是用vs2012创建的,所以会弹窗提示,需要更新相关的文件配置如图,点击确定即可

  

  2、接下来吧菜单栏中的输出平台选择位x64,右键点击zlibvc,在弹出菜单中点击build,就会开始报错如下

Severity	Code	Description	Project	File	Line	Suppression State
Error	MSB3073	The command "cd ..\..\contrib\masmx64
bld_ml64.bat
:VCEnd" exited with code 9009.	zlibvc	C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets	123

  这个错误的产生鞥是来自生成时间中的预生成事件,因为无法准确的通过路径找到bat文件执行

  3、解决方法如下:右键点击zlibvc,在弹出菜单中选择Properties(属性),在弹出的属性对话框选择Build Event(生成事件),点击Pre-Build Event(预先生成事件),会看到Command Line(命令行)中有错误提示所示的命令行,在这里我们对其进行修改,点击命令旁边的下拉按钮,然后点击edit(编辑),吧内容删掉,替换如下:(此处的内容可参照命令行方式)

E:
cd E:\zlib128\zlib-1.2.8\contrib\masmx64
bld_ml64.bat

  添加号之后取人关闭,然后重新执行第二步进行编译,发现已经开始正常的编译了,但是后面又报了个错如下,只需要双击错误,就会自动打开一个.def文件,将Verson一行的1.2.8改为1.28,然后保存

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK1118	syntax error in ‘VERSION‘ statement	zlibvc	E:\zlib128\zlib-1.2.8\contrib\vstudio\vc11\zlibvc.def	4

  重新执行第二部操作进行编译,此时就会提示成功的消息,如下

1>------ Build started: Project: zlibvc, Configuration: Debug x64 ------
1>  Microsoft (R) Macro Assembler (x64) Version 14.00.24210.0
1>  Copyright (C) Microsoft Corporation.  All rights reserved.
1>
1>   Assembling: inffasx64.asm
1>   Assembling: gvmat64.asm
1>  Microsoft (R) Macro Assembler (x64) Version 14.00.24210.0
1>  Copyright (C) Microsoft Corporation.  All rights reserved.
1>
1>     Creating library x64\ZlibDllDebug\zlibwapi.lib and object x64\ZlibDllDebug\zlibwapi.exp
1>  zlibvc.vcxproj -> E:\zlib128\zlib-1.2.8\contrib\vstudio\vc11\x64\ZlibDllDebug\zlibwapi.dll
1>  zlibvc.vcxproj -> x64\ZlibDllDebug\zlibwapi.pdb (Full PDB)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

  在E:\zlib128\zlib-1.2.8\contrib\vstudio\vc11\x64\ZlibDllDebug目录下就会出现对应的输出文件,如图

  

  至此,所有的编译工作完成,PS.x86的visual studio ide编译方式,不需要修改任何东西即可编译完成。

  

时间: 2024-10-12 22:36:51

win10下Visual Studio 2015,C++编译zlib的相关文章

win10下Visual Studio 2015,C++ x64编译zmq

PS.本人编译过程踩得坑,记录备忘 下载:(1)官网:http://zeromq.org/intro:get-the-software,有简明的编译方式,cmake的,这里不多赘述 (2)到GitHub下载,https://github.com/zeromq,本人下载时是4.1.x stable,在https://github.com/zeromq/zeromq4-1 准备:首先将下载的源码包解压,到任意目录,本人解压得到的根目录为E:\zeromq4-1-master\zeromq4-1-ma

用Visual Studio 2015成功编译、发布UMDF驱动到目标机(windows10 X86)!!

开发工具:Visual Studio 2015企业版 主      机:windows10 X64企业版,主机是安装了Visual Studio 2015的操作系统,主要进行驱动开发和调试. 目  标 机:windows10 X86企业版,目标机是安装和调试驱动的操作系统,和主机是分离的独立的操作系统. 虚  拟 机:VMWear Workstation 12 Pro 前提:我们已经成功安装了Visual Studio 2015以及WDK,而且更重要一点是一定要SDK版本和WDK版本保证一致,如

win10 安装visual studio 2015遇到的坑

最近win7系统不知啥原因无法访问域中的网络文件,打算升级到win10体验一下.结果发现这一路有太多的坑.首先安装win10基本上算顺利,但是当进入系统后,菜单模式对于PC的鼠标来说,用起来感觉不顺手,在网上找了一下,发现有方法可以模拟win7开始菜单,经过配置,菜单确实比较顺手了,但是开始的图标看起来总是怪怪的,和其他UI元素不搭.最后还是还原到win10菜单. win10状态栏上的 [搜索]用起来还不错. 在安装Visual studio 2015的时候,安装需要从网络上下载很多资源,安装了

《ASP.NET5》Windows 7下Visual Studio 2015安装记录

最近想尝试一下在IBM Bluemix上使用ASP.NET5创建Web应用程序,所以需要在本地搭建ASP.NET5 Web的开发测试环境. 操作系统:Windows 7 x64 VS:Visual Studio Community 2015(含 Update 1) ASP.NET5是什么? ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东西. 在

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 关于

QT5.7.0在win10下使用visual studio 2015编译(目标平台 xp)

环境:win10+vs2015+QT5.7.0 目标:编译出能在windows xp上运行的QT 通过baidu和bing找不出来的结果没有一个能成功运行,大部分都能编译成功,并完美解决“exe不是有效的win32程序”,但是程序依旧没法正常显示窗口. 此时会有一个crash,具体位置是qwindows.dll,但是使用depends查看也没看出来qwindows.dll有问题,有些人会遇到qwindows.dll依赖的 kernel32.dll在xp下没有对应接口,具体接口不记得了,最后看到是

Visual Studio 2015下编译zmq项目下其他项目踩进的项目引用坑

PS.在之前的一篇文章中介绍了如何用Visual Studio 2015编译zmq,在编译同解决方案中除了libzmq之外的项目例如inproc_thr时会报错误,具如下: Severity Code Description Project File Line Suppression State Error LNK1181 cannot open input file 'libzmq.lib' inproc_thr E:\zeromq4-1-master\zeromq4-1-master\bui

Visual Studio 2015编译wxWidgets

宫指导说,换帅如换刀 程序员的编译器一换,基本套路必须都重练几次 使用wxWidgets并不难,但不能使用现有的库和工程配置文件,细节就必须理清楚 获取wxWidgets 官方的下载页面,下7z或zip文件均可 文件“wxWidgets根目录/docs/msw/install.txt”是编译说明文档,可以作为参考 添加环境变量WXWIN,值是wxWidgets根目录的路径 wxWidgets根目录的路径不要含有空格 增加vs2015支持 vs2015影响编译的改动,主要是定义了snprintf,

【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发

原文:Visual Studio 2015 for Linux更好地支持Linux下的开发 英文原文:Targeting Linux Made Easier in Visual Studio 2015 Visual C++ for Linux 扩展使 Visual Studio 2015 的用户可以在 VS2015 中编写C或者 C++ 代码,并将代码部署到基于 Linux 的系统中去编译和调试.源代码和项目文件通过 SSH 传输到远程机上,程序的输出将显示在 Visual Studio 上.