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

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

目录
相关文章
|
2月前
|
机器学习/深度学习 前端开发 Windows
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
32 0
|
8月前
|
C++
VS编译过程中出现无法解析的外部符号namespace解决方法
VS编译过程中出现无法解析的外部符号namespace解决方法
82 0
|
1月前
|
编译器 C语言
Qt使用MSVC编译错误: LNK2019: 无法解析的外部符号
Qt使用MSVC编译错误: LNK2019: 无法解析的外部符号
19 1
|
2月前
|
算法 编译器 C语言
【C++ 函数 基本教程 第六篇 】深度解析C++函数符号:GCC与VS的名称修饰揭秘
【C++ 函数 基本教程 第六篇 】深度解析C++函数符号:GCC与VS的名称修饰揭秘
49 1
|
4月前
|
数据可视化
第七章:MATLAB基本运算符号解析及案例详解
第七章:MATLAB基本运算符号解析及案例详解
34 1
|
6月前
|
XML Java 数据格式
Java解析xml文件遇到特殊符号&会出现异常的解决方案
XML当中特殊符号包括< > & ' "等,它们是不允许作为xml文件的PCDATA,若想使用话,需用转义符代替
75 0
【项目实战】解析HTML并处理特殊符号
【项目实战】解析HTML并处理特殊符号
|
11月前
|
编译器
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
325 0
|
C++
error LNK2001: 无法解析的外部符号 _ft_sdf_renderer_class/ _ft_bitmap_sdf_renderer_class
error LNK2001: 无法解析的外部符号 _ft_sdf_renderer_class/ _ft_bitmap_sdf_renderer_class
88 0
libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用
libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用
123 0
libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用

推荐镜像

更多