從zlib官方網站下載zlib的源代碼zlib125.zip,只有VC6、VC9和VC10的工程,從VC6的工程轉爲VC8編譯出現問題,如下:
1>Assembling...
1> Assembling: f:\work\study\zlib-1.2.5\contrib\masmx86\inffas32.asm
1>Assembling...
1> Assembling: f:\work\study\zlib-1.2.5\contrib\masmx86\gvmat32.asm
1>MASM : fatal error A1000: cannot open file : f:\work\study\zlib-1.2.5\contrib\masmx86\gvmat32.asm
1>Project : error PRJ0019: 工具從"Assembling..."
發現masmx86並沒有gvmat32.asm,於是根據win32/Makefile.msc的說明,其中有4中編譯方式,如下:
# 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" \
# OBJA="inffasx64.obj gvmat64.obj inffas8664.c" (use ASM code, x64)
以第三種爲例:
1、打開“Visual Studio 2005 命令提示”,爲了使用VC2005的缺省系統配置參數;
2、切換目錄到zlib-1.2.5\contrib\masmx86,並執行腳本bld_ml32.bat,此時會產生inffas32.obj和match686.obj,把這兩個文件拷貝到源代碼目錄zlib-1.2.5下;
3、切換目錄到zlib-1.2.5,執行:nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="inffas32.obj match686.obj"
經過以上三個步驟即可完成zlib1.2.5的編譯。
如果使用第一種方式編譯,需要修改win32/Makefile.msc,在OBJS中增加inffast.obj,否則會出現連接錯誤。
轉自:http://blog.163.com/waft_xu/blog/static/43815294201083094750976/