关于编译eMule0.48a 提示: zlib.lib(gzio.obj) : error LNK2019: 无法解析的外部符号 __imp__strerror ,该符号在函数 _gzerror 中被引用

我用vs2003 以 Debug 方式 编译eMule0.48a ,编译出错,提示如下:

------ 已启动生成: 项目: emule, 配置: Debug Win32 ------

正在链接...
zlib.lib(zutil.obj) : warning LNK4217: 本地定义的符号 _malloc 在函数 _zcalloc 中导入
zlib.lib(gzio.obj) : warning LNK4049: 已导入本地定义的符号 _malloc
zlib.lib(zutil.obj) : warning LNK4217: 本地定义的符号 _free 在函数 _zcfree 中导入
zlib.lib(gzio.obj) : warning LNK4049: 已导入本地定义的符号 _free
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _ftell 在函数 _gz_open 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _fprintf 在函数 _gz_open 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 __fdopen 在函数 _gz_open 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _fopen 在函数 _gz_open 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 __errno 在函数 _gz_open 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _sprintf 在函数 _gzdopen 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _fwrite 在函数 _gzsetparams 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _fread 在函数 _check_header 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _fclose 在函数 _destroy 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 __vsnprintf 在函数 _gzprintf 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _fflush 在函数 _gzflush 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _fseek 在函数 _gzseek 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _fputc 在函数 _putLong 中导入
zlib.lib(gzio.obj) : warning LNK4217: 本地定义的符号 _clearerr 在函数 _gzclearerr 中导入
zlib.lib(gzio.obj) : error LNK2019: 无法解析的外部符号 __imp__strerror ,该符号在函数 _gzerror 中被引用
Debug/emule.exe : fatal error LNK1120: 1 个无法解析的外部命令

生成日志保存在“file://e:\Test\VC\eMule-0.48a\srchybrid\Debug\BuildLog.htm”中
emule - 2 错误,18 警告


---------------------- 完成 ---------------------

    生成: 0 已成功, 1 已失败, 0 已跳过



我把 zlib.lib 的 运行时库(工程属性--〉配置属性--〉C/C++ --〉代码生成--〉运行时库) 改成 “多线程(/MT)”并重新生成,就可以 编译过去了(记得先把生成重新后的zlib.lib拷贝到emule 工程的相应目录下)。

题外话:成功编译eMule,真是好费劲。

原文地址:https://www.cnblogs.com/finema/p/899599.html