vs2013编译zlib1.2.8库

一、zlib库的编译
    首先要下载这个库,我下载的是zlib-1.2.8,下载完解压出来即可。下边就开始编译吧。(包括动态库和静态库两种)

  1. 首先开启VS2013的Command Prompt (32bit),也就是命令提示窗口。

  2. 进入到zlib-1.2.5/contrib/masmx86目录,执行bld_ml32.bat。(同理,64位的电脑进入masmx64目录,执行bld_ml64.bat)。这一步运行bld_ml32批处理文件,里面调用ml命令编译inffas32.asm和match686.asm,生成inffas32.obj和match686.obj(生成在本目录下)。这两个文件在zlibvc中用到。

  3. zlib的vs sln解决方案文件可以在如下路径中找到:zlib-1.2.5/contrib/vstudio/vc11/zlibvc.sln,打开

   这个解决方案中包含6个工程。其中:
   (1). zlibvc生成动态链接库zlibwapi.dll和对应的导入库zlibwapi.lib
   (2). zlibstat生成静态链接库zlibstat.lib
   (3). testzlibdll测试生成的动态链接库zlibwapi.dll
   (4). testzlib测试生成的静态链接库zlibstat.lib        

   最后我们在debug模式下编译整个解决方案。生成的dll和lib文件可在相应的文件夹中找到。

   (*注)如果用vs命令行编译提示"ml不是内部或外部命令"的话,说明你的ml.exe路径不对,这个是安装vs的时候默认的路径,除非你修改过vs的安装路径。解决方案:

    a.去对应的Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin目录下找到ml.exe

    b.获取全局搜索ml.exe

    c.找到ml.exe后,复制到命令行要编译的那个目录(我的是\\zlib-1.2.8\contrib\masmx86),然后编辑就ok了,会在当前目录生成inffas32.obj和match686.obj文件

 
下边介绍如何使用编译好的动态或是静态库。(假设项目工程已经建立完毕)

这里我们把静态库zlibstat.lib和动态库(zlibwapi.dll/zlibwapi.lib)以及zlib.h/zlibconf.h文件放在一个文件夹中。


1.编译步骤

a.先用vs2015命令行执行下bld_ml32.bat批处理
b.将inffas32.obj和match686.obj复制到压缩目录
c.打开zlib-1.2.8\contrib\vstudio\vc11\zlibvc.sln编译即可

2.出现的问题和解决

1.error LNK2026: module unsafe for SAFESEH image

修改属性/linker/高级/映像具有安全异常处理程序/ YES 改为 No

2.fatal error LNK1118: syntax error in ‘version’ statement

打开zlibvc.def文件VERSION 修改为1.28即可(原来是1.2.8)


下边介绍如何使用编译好的动态或是静态库。(假设项目工程已经建立完毕)

这里我们把静态库zlibstat.lib和动态库(zlibwapi.dll/zlibwapi.lib)以及zlib.h/zlibconf.h文件放在一个文件夹中。

 

二、使用zlib静态库:zlibstat.lib

1. 包含头文件
    属性--C/C++--常规--附加包含目录(添加包含.h文件的目录)
2. 定义宏
    属性--C/C++--预处理器--预处理器定义:添加 ZLIB_WINAPI ASMV ASMINF

3. 项目包含.lib文件所在的目录:
    属性--链接器--常规--附加库目录
4. 项目包含.lib文件
    属性--链接器--输入--附加依赖项(libstat.lib)

5. 项目代码中 #include "zlib.h"
编译生成.exe即可使用。


三、使用动态库 zlibwapi.lib
1. 包含头文件
    属性--C/C++--常规--附加包含目录(添加包含.h的目录)
2. 定义宏
    属性--C/C++--预处理器--预处理器定义:添加 ZLIB_WINAPI(一定要加,否则提示“无法解析外部命令”,妈的,这个卡了我一天,各种环境都配好了,反反复复就是编不过,坑死了)

3. 项目包含.lib文件所在的目录:
    属性--链接器--常规--附加库目录
4. 项目包含.lib文件
    属性--链接器--输入--附加依赖项(zlibwapi.lib)

5. 项目代码中 #include "zlib.h"
编译生成.exe文件需要.dll文件支持(动态加载)



相关链接:http://www.07net01.com/2015/08/902638.html

http://www.360doc.com/content/13/0311/09/3972394_270725627.shtml

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值