原文转自 http://dearymz.blog.163.com/blog/static/2056574200871010027435/

1、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命令行提示"控制台下运行,报错的具体情况就很明显啦:

E:提示符>ml.exe /nologo /c /coff /Cx/Zi /Fo".\Win32_DLL_ASM_Debug\inffas32.obj" "我的路径\zlib123\contrib\masmx86\inffas32.asm"
 Assembling: E:\开源项目\压缩\zlib 1.2.3\zlib123\contrib\masmx86\inffas32.asm
我的路径\zlib123\contrib\masmx86\inffas32.asm(647) : error A2070:invalid instruction operands
我的路径\zlib123\contrib\masmx86\inffas32.asm(649) : error A2070:invalid instruction operands
我的路径\zlib123\contrib\masmx86\inffas32.asm(663) : error A2070:invalid instruction operands
我的路径\zlib123\contrib\masmx86\inffas32.asm(720) : error A2070:invalid instruction operands

查下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:

http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=6306f7dc-2cc2-4591-bd60-5d802178fdfa

解决办法是把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


2、 在以静态库方式使用zlib-1.2.6时,发现LNK2019报错:

error LNK2019: 无法解析的外部符号 _deflateEnd
error LNK2019: 无法解析的外部符号 _deflate
error LNK2019: 无法解析的外部符号 _deflateInit_
error LNK2019: 无法解析的外部符号 _inflateEnd
error LNK2019: 无法解析的外部符号 _inflate
error LNK2019: 无法解析的外部符号 _inflateInit_
 
    经查需要在使用时定义ZLIB_WINAPI宏:
#ifdef _WIN32
    #define ZLIB_WINAPI
#endif
               #include "zlib.h"
 
 

zlib编译不过(Error A2070)解决方法(转)的更多相关文章

  1. php编译安装 报错 make ***[libphp5.la] Error 1解决方法

    报错信息: /usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [libphp5.la] Err ...

  2. CentOS 7重装mysql编译过程报错解决方法

    错误记录: [ 82%] Building C object libmysql/CMakeFiles/clientlib.dir/__/sql-common/client.c.o/usr/local/ ...

  3. CentOS 7 重装mysql编译过程报错解决方法

    错误记录: [ 82%] Building C object libmysql/CMakeFiles/clientlib.dir/__/sql-common/client.c.o/usr/local/ ...

  4. 安裝jpeg-6b png error错误解决方法

    安裝jpeg-6b png error错误解决方法 默认安裝jpeg-6b shell> wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar. ...

  5. MySQL主从失败 错误Got fatal error 1236解决方法

    --MySQL主从失败 错误Got fatal error 1236解决方法 ----------------------------------------------------2014/05/1 ...

  6. mac 上运行cassandra出现的java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: : : unknown error错误解决方法

    mac 上运行cassandra出现的java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostExce ...

  7. PHP failed to ptrace(PEEKDATA) pid 13659: Input/output error错误解决方法

    PHP failed to ptrace(PEEKDATA) pid 13659: Input/output error错误解决方法 现在改linux内核文件打开限制<pre>ulimit ...

  8. php5.3.*编译出现make: *** [ext/gd/libgd/gd_compat.lo] Error 1 解决方法

     升级系统,把php5.2.9升级到5.3.6,按照以前的编译参数,configure能正常通过,但是在make的时候提示: In file included from /root/php-5.3.6 ...

  9. xcode修改代码目录结构出现clang:error:nosuchfileordirectory解决方法

    需要迁移一个开源工程的一部分内容到自己工程,迁移对方的工程到自己工程之后,因目录结构配置整理需要,对嵌入的工程目录进行了结构改变,编译后出现: clang: error: no such file o ...

  10. error MIDL2311 解决方法

    error MIDL2311 : statements outside library block are illegal in mktyplib compatability mode : [] 在编 ...

随机推荐

  1. 6 Django的视图层

    视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...

  2. 深入理解Angular2变化监测和ngZone

    转载自GitHub JTangming : https://github.com/JTangming/tm/issues/4 Angular应用程序通过组件实例和模板之间进行数据交互,也就是将组件的数 ...

  3. android stadio open recent 在同一窗口打开

    Android staido 有一个功能是open recent ,默认是下面这样的: 就出来一个框,给你选择,是在新的窗口打开,还是在当前窗口打开.如果你选了当前窗口,并且点了Remember,do ...

  4. BF算法(蛮力匹配算法)

    将主串M指定位置和目标串S开始位置进行对比,如果相同将M的下一个字符和S的下一个字符对比,如果不同则M的下一个字符和S的开始位置对比,直到S中每一个字符和M中的连续字符串相等,否则不匹配. C#代码- ...

  5. 亲手搭建一个基于Asp.Net WebApi的项目基础框架1

    目标:教大家搭建一个简易的前后端分离的项目框架. 目录: 1:关于项目架构的概念 2:前后端分离的开发模式 3:搭建框架的各个部分 这段时间比较闲,所以想把之前项目里用到的一些技术写到博客里来,分享给 ...

  6. CentOS7配置图形界面及设置vnc远程连接、windows远程桌面连接

    安装CentOS桌面 yum groupinstall "GNOME Desktop" 重启,进入终端,将启动模式变更为图形模式 systemctl set-default gra ...

  7. 《Cracking the Coding Interview》——第1章:数组和字符串——题目6

    2014-03-18 01:45 题目:给定一个NxN的矩阵,就地旋转90度.(没有样例又不说方向的话,随便往哪儿转.) 解法:如果N为奇数,除了中心点以外四等分.如果N为偶数,四等分.按照A-> ...

  8. nginx清除反向代理缓存

    nginx重启无法清除反向代理的缓存,可以清空安装目录下的proxy_cache文件夹里的内容来清除.

  9. katalon系列二:selenium IDE的替代者——Katalon Recorder

    Katalon Recorder是和selenium IDE一样的一个浏览器插件,可以录制web上的操作并回放,但我个人感觉Katalon Recorder更好用.大家可以直接在chrome商店下载安 ...

  10. Jmeter mysql性能测试

    一:首先建立jdbc connection configuration,设置参数如图 1.variable name 参数名称,与后面的sample中设置的variable name一致.含义为:通过 ...