zlib是个很牛的东东,从http://www.zlib.net/可 以获取到源码,但在VS2008下编译会报错:error PRJ0019: 某个工具从以下位置返回了错误代码: "Assembling...", 翻开BuildLog.htm查看其编译命令行ml.exe /nologo /c /coff /Cx /Zi /Fo".\Win32_DLL_ASM_Debug\inffas32.obj" "前面是我的路径\zlib123\contrib\masmx86\inffas32.asm", 然后将该命令放在"VS2008命令行提示"控制台下运行,报错的具体情况就很明显啦:
查下MSDN: ML Nonfatal Error A2070 invalid instruction operands One or more operands were not valid for the instruction with which they were specified. (这个解释基本属于废话) 上网一查,发现别人也遇到相同的问题:http://svn.haxx.se/dev/archive-2005-11/0942.shtml。原因在于 It (Microsoft Macro Assembler 8.0, included with Visual C++ 2005 Express ) refuses to assemble a MOVD instruction with a memory operand with an implied size, and requires that "dword ptr" prefix the memory operand. 微软说这是by design,不是bug: 解决办法是把inffas32.asm中的4处出错的类似 movd mm4, [esp+0] 的汇编代码,添加dword ptr修饰符,改为 movd mm4,dword ptr [esp+0] 这样就能顺利编译、通过测试了。
参考:http://www.cppblog.com/tx7do/archive/2007/10/12/34014.aspx 2012-7-21 在以静态库方式使用zlib-1.2.6时,发现LNK2019报错:
经查需要在使用时定义ZLIB_WINAPI宏:
|