You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译Windows版zlib 1.2.13时遇__imp____acrt_iob_func链接错误求助

编译zlib 1.2.13时遇到链接错误求助

我正尝试为Windows系统编译zlib 1.2.13,但无法解决以下链接错误,恳请各位提供帮助!

编译日志

Creating library zdll.lib and object zdll.exp

[2023-08-09T07:50:09.645Z]  if exist zlib1.dll.manifest  mt -nologo -manifest zlib1.dll.manifest -outputresource:zlib1.dll;2

[2023-08-09T07:50:10.227Z]  cl -c -I. -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_NO_CRT_STDIO_INLINE -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib"  ./test\example.c

[2023-08-09T07:50:10.227Z] example.c

[2023-08-09T07:50:10.227Z]  link -nologo -debug -incremental:no -opt:ref example.obj zlib.lib

[2023-08-09T07:50:10.227Z] example.obj : error LNK2019: unresolved external symbol __imp____acrt_iob_func referenced in function _main

[2023-08-09T07:50:10.227Z] example.exe : fatal error LNK1120: 1 unresolved externals

[2023-08-09T07:50:10.227Z] NMAKE : fatal error U1077: '"c:\program files (x86)\microsoft visual studio 12.0\vc\bin\link.EXE"' : return code '0x460'

[2023-08-09T07:50:10.227Z] Stop.

我的lib环境变量配置

$env:lib += ";c:\program files (x86)\microsoft visual studio 12.0\vc\lib"
$env:lib += ";c:\program files (x86)\windows kits\10\lib\10.0.19041.0\um\x86"
$env:lib += ";c:\program files (x86)\windows kits\10\lib\10.0.19041.0\um\x64"
$env:lib += ";c:\program files (x86)\windows kits\10\lib\10.0.19041.0\ucrt\x86"
$env:lib += ";c:\program files (x86)\windows kits\10\lib\10.0.19041.0\ucrt\x64"
$env:lib += ";c:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\lib\x86"
$env:lib += ";c:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\lib\x64"

问题原因及解决建议

  1. 工具链版本冲突:同时混用VS2013(v12.0)和VS2019(v14.29)的lib路径,导致CRT版本不兼容。__imp____acrt_iob_func是Universal CRT(UCRT)中的函数,VS2013默认依赖旧版CRT,VS2019则使用UCRT,混合引用会引发链接错误。

  2. 解决步骤:

    • 清理lib环境变量,只保留当前使用的VS版本对应路径:用VS2013编译就移除VS2019的lib路径;切换到VS2019则移除VS2013的路径。
    • 若坚持用VS2013:需搭配VS2013配套的Windows 8.1 SDK,不要混用Win10 SDK的UCRT路径。编译时确保链接对应CRT库,比如用-MD选项时,链接命令需包含msvcrt.lib。
    • 更简便的方式:打开VS2019的「开发者命令提示符」,直接在该环境下编译zlib,无需手动配置环境变量,工具链会自动加载正确的lib路径。
    • 检查编译命令:编译example时,确认链接参数中包含正确的CRT库,比如添加msvcrt.lib(对应-MD编译选项)到link命令后。

内容的提问来源于stack exchange,提问作者Marisol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:59:55