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

Keil MDK项目引入stb_image.h后出现__stdout符号重定义错误的求助

Keil MDK项目引入stb_image.h后出现__stdout符号重定义错误的求助

各位大佬好,我最近在用Keil MDK开发MCU项目,碰到一个棘手的问题,想请教下大家怎么解决。

事情是这样的:我在main.c里引入了stb_image.h之后,编译链接时报了这个错误:

.\Objects\JinshenTekDigitalLightingBoard(M433LE8AE).axf: Error: L6200E: Symbol __stdout multiply defined (by stdio_streams.o and retarget.o).

先给大家说下我的项目工具链信息,方便排查:

  • Toolchain: MDK Professional 5.36 (Flex) Version: 5.36.0.0
  • Toolchain Path: C:\Keil_v5\ARM\ARMCC_506build750\Bin
  • C Compiler: Armcc.exe V5.06 update 6 (build 750)
  • Assembler: Armasm.exe V5.06 update 6 (build 750)
  • Linker/Locator: ArmLink.exe V5.06 update 6 (build 750)
  • Library Manager: ArmAr.exe V5.06 update 6 (build 750)
  • Hex Converter: FromElf.exe V5.06 update 6 (build 750)
  • CPU DLL: SARMCM3.DLL V5.36.0.0
  • Dialog DLL: DCM.DLL V1.17.3.0
  • Target DLL: NULink\Nu_Link.dll V3.16
  • Dialog DLL: TCM.DLL V1.53.0.0

我自己排查了一下,追踪项目里的retarget.c文件,发现里面确实定义了FILE __stdout这个符号;现在应该是引入stb_image.h之后,它间接触发了标准库中stdio_streams.o里的__stdout也被编译进来,结果就导致链接时符号重定义了。

有没有大佬知道怎么解决这个问题呀?比如能不能让stb_image.h不牵扯到标准库的stdout相关内容,或者调整retarget的定义方式来避免冲突?

备注:内容来源于stack exchange,提问作者old cat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 03:44:28