我的环境为: Win764 + VS2005 + zlib1.2.8

zlib1.2.8我使用VS2010来编译。

-------------------------------------------------------------------------------------------------

我导入zlib库的代码如下:

#include "zlib128/zlib.h"
// #pragma comment(lib, "zlib128/zlibwapi.lib")  // 链接zlib动态库
#pragma comment(lib, "zlib128/zlibstat.lib")  // 链接zlib静态库

编译使用zlib的工程,出现错误信息如下:

1>Gzip.obj : error LNK2019: 无法解析的外部符号 _deflateEnd

1>Gzip.obj : error LNK2019: 无法解析的外部符号 _deflate
1>Gzip.obj : error LNK2019: 无法解析的外部符号 _deflateInit2_
1>Gzip.obj : error LNK2019: 无法解析的外部符号 _inflateEnd
1>Gzip.obj : error LNK2019: 无法解析的外部符号 _inflate
1>Gzip.obj : error LNK2019: 无法解析的外部符号 _inflateInit2_

fatal error LNK1120: 6 个无法解析的外部命令error LNK2019: 无法解析的外部符号 _deflate

从错误信息可以看出,在我使用的每个zlib库函数的前面都多出了一个下划线,如 _deflate,

通过查看zlibwapi.dll的导出函数,发现相应的函数前面并没有下划线,也就难道编译会链接错误了。

------------------------------------------------------------------------------------------------------------------------------------------------------

解决思路:

zlib.h头文件,定义了zlib库的导出函数原型,如:ZEXTERN intZEXPORT deflateEnd OF((z_streamp strm));

注意红色的ZEXPORT ,其原型在zconf.h文件里面定义:

#ifndef ZEXPORT
#  define ZEXPORT 
#endif

看到了吗,默认的ZEXPORT宏,只是个空符号罢了,而实际是其应该表示函数的调用方式。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

解决方法:

在zconf.h文件将ZEXPORT宏的定义改成下面的形式即可:

#ifndef ZEXPORT
#  define ZEXPORT WINAPI
#endif

-----------------------------------------------------------------------------------------------------------------------------------------------------------

最新文章

  1. 弹框控件 UIAlertView UIActionSheet
  2. gcc/g++中weak弱符号及alias别名
  3. java MAVEN 项目出现红叉
  4. 分布式服务框架Zookeeper
  5. java内部类以及匿名类
  6. Clojure学习笔记(二)——函数式编程
  7. hive DDL
  8. CentOS6.6系统源代码安装mysql5.5.28教程(附源码包下载地址)+sysbench的安装
  9. Cocos2d-x 3.0 事件系统【转】
  10. Windows Azure 微软公有云体验(一) 网站、SQL数据库、虚拟机
  11. 全世界只有我们Erlang程序员是正确的
  12. P1066 2^k进制数
  13. 安装pygame
  14. GridView七十二绝技-大全(收藏版)(转至别人博客)
  15. 【Python】 SQLAlchemy的初步使用
  16. [LeetCode] Monotone Increasing Digits 单调递增数字
  17. 【一天一道LeetCode】#141. Linked List Cycle
  18. Liunx之Centos系统无人值守全自动化安装
  19. window.open实现模式窗口
  20. lua --- 用break实现continue逻辑

热门文章

  1. HTML中body相关标签-02
  2. 7.Mongodb安全性流程
  3. UIView和CALayer是什么关系?
  4. USACO Section2.3 Longest Prefix 解题报告 【icedream61】
  5. Pythontutor:可视化代码在内存的执行过程
  6. python学习笔记-基础
  7. Asp.net获取网站绝对路径的几种方法
  8. ASP.NET Core ---异常处理
  9. UTXO是什么?
  10. ExtJs学习之MessAgeBox的使用