error LNK2019: 无法解析的外部符号 _deflate

本文涉及的产品
云解析DNS,个人版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 我的环境为: Win764 + VS2005 + zlib1.2.8 zlib1.2.8我使用VS2010来编译。 ------------------------------------------------------------------------------------------------- 我导入zlib库的代码如下: #include "zlib128/zlib.

我的环境为: 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

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

目录
相关文章
|
2月前
|
机器学习/深度学习 前端开发 Windows
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
49 0
|
27天前
|
Linux 数据处理
探索Linux下的readlink命令:解析符号链接的利器
`readlink`命令在Linux中用于揭示符号链接的指向,显示它们所链接的实际文件或目录的路径。它可以显示简洁的绝对路径(-f),处理循环链接(-e),或不加换行符输出(-n)。例如,查看`link.txt`指向:`readlink link.txt`;获取绝对路径:`readlink -f link.txt`。使用时要注意链接是否存在、权限问题和可能的循环链接。
|
2月前
|
Java Maven
无法解析符号 ‘SpringBootApplication’
无法解析符号 ‘SpringBootApplication’
28 1
|
2月前
|
编译器 C语言
Qt使用MSVC编译错误: LNK2019: 无法解析的外部符号
Qt使用MSVC编译错误: LNK2019: 无法解析的外部符号
120 1
|
2月前
|
算法 编译器 C语言
【C++ 函数 基本教程 第六篇 】深度解析C++函数符号:GCC与VS的名称修饰揭秘
【C++ 函数 基本教程 第六篇 】深度解析C++函数符号:GCC与VS的名称修饰揭秘
113 1
|
2月前
|
数据可视化
第七章:MATLAB基本运算符号解析及案例详解
第七章:MATLAB基本运算符号解析及案例详解
52 1
|
8月前
|
XML Java 数据格式
Java解析xml文件遇到特殊符号&会出现异常的解决方案
XML当中特殊符号包括< > & ' "等,它们是不允许作为xml文件的PCDATA,若想使用话,需用转义符代替
125 0
|
1月前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
36 3
|
22天前
|
存储 安全 Java
深度长文解析SpringWebFlux响应式框架15个核心组件源码
以上是Spring WebFlux 框架核心组件的全部介绍了,希望可以帮助你全面深入的理解 WebFlux的原理,关注【威哥爱编程】,主页里可查看V哥每天更新的原创技术内容,让我们一起成长。
|
24天前
|
关系型数据库 分布式数据库 数据库
PolarDB-X源码解析:揭秘分布式事务处理
【7月更文挑战第3天】**PolarDB-X源码解析:揭秘分布式事务处理** PolarDB-X,应对大规模分布式事务挑战,基于2PC协议确保ACID特性。通过预提交和提交阶段保证原子性与一致性,使用一致性快照隔离和乐观锁减少冲突,结合故障恢复机制确保高可用。源码中的事务管理逻辑展现了优化的分布式事务处理流程,为开发者提供了洞察分布式数据库核心技术的窗口。随着开源社区的发展,更多创新实践将促进数据库技术进步。
29 3

推荐镜像

更多