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

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

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

目录
相关文章
|
机器学习/深度学习 前端开发 Windows
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
578 0
|
Java Maven
无法解析符号 ‘SpringBootApplication’
无法解析符号 ‘SpringBootApplication’
1473 1
|
编译器 C语言
Qt使用MSVC编译错误: LNK2019: 无法解析的外部符号
Qt使用MSVC编译错误: LNK2019: 无法解析的外部符号
1695 1
|
算法 编译器 C语言
【C++ 函数 基本教程 第六篇 】深度解析C++函数符号:GCC与VS的名称修饰揭秘
【C++ 函数 基本教程 第六篇 】深度解析C++函数符号:GCC与VS的名称修饰揭秘
889 1
|
Linux 数据处理
探索Linux下的readlink命令:解析符号链接的利器
`readlink`命令在Linux中用于揭示符号链接的指向,显示它们所链接的实际文件或目录的路径。它可以显示简洁的绝对路径(-f),处理循环链接(-e),或不加换行符输出(-n)。例如,查看`link.txt`指向:`readlink link.txt`;获取绝对路径:`readlink -f link.txt`。使用时要注意链接是否存在、权限问题和可能的循环链接。
|
数据可视化
第七章:MATLAB基本运算符号解析及案例详解
第七章:MATLAB基本运算符号解析及案例详解
736 1
|
XML Java 数据格式
Java解析xml文件遇到特殊符号&会出现异常的解决方案
XML当中特殊符号包括< > & ' "等,它们是不允许作为xml文件的PCDATA,若想使用话,需用转义符代替
1310 0
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
1058 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1713 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
747 4

热门文章

最新文章

推荐镜像

更多
  • DNS