你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于在Keil开发环境中导入第三方库lib时,出现类型冲突的原因及BUG解决方案!

[复制链接]
A0dy 发布时间:2026-7-1 15:35

一、开发环境

开发软件:keil

版本:v6.21(AC6);

image-20251124005706041.png

二、问题描述

开发过程中,在导入第三方库.lib 编译时,出现 ... wchart-16 clashes with wchart-32. 的报错;

image-20251124010336709.png

三、出现的原因

1、关于 enum / wchar

enum类型的底层存储类型是 编译器实现定义的,通常默认为 int(4字节);

当开启 Short enums 选项后,编译器会尝试使用 最小可能的整数类型 来表示枚举值(比如 charshort等),只要能容纳所有枚举常量即可;

使用 Short enums (1字节) 可节省内存 !

wchar_t 是 C/C++ 中用于宽字符的类型,其大小也是 编译器实现定义的 ;

当开启 Short wchar 选项后, wchar_t 将变为 2 字节

可以选择 wchar_t2 字节4 字节

2、报错原因

在使用第三方 lib库时,库中混合使用了两种不同宽度的 wchar_t 类型,一部分代码 / 库编译时使用 wchar_t 为 16 位,另一部分使用 32 位,从而导致链接冲突;

wchart-16 clashes with wchart-32

3、编译器配置

默认情况:在使用AC6编译时,会自动勾选 Short enums/wchar

等同于 -fshort-enums -fshort-wchar

image-20251124010621697.png

当开启 Short enums/wchar时,可能会导致与一些库不兼容,与未开启该选项的库链接时出错;

选项 作用 默认值
Short enums 枚举使用最小整数类型 开启(1 字节)
Short wchar 控制 wchar_t 大小 开启(2 字节)

四、解决方案

方法一

关闭 Short enums/whcar 选项

即使用 enums(4字节),wchar_t (4字节);

取消勾选 Short enums/whcar 选项 即可;

image-20251124014404758.png

方法二

只关闭 Short wchar

启用 Short enums (1字节) ,而 wchar_t 大小为 4字节;

同样取消勾选 Short enums/whcar 选项

在 Misc Controls 中添加:-fshort-enums,开启 Short enums,以节省内存空间;

如图所示:

image-20251124014318002.png

五、总结

不知道大家在Keil中导入比较旧的第三库lib时,有没有遇到类似的相关问题呢?

或者大家有其他的解决方案,也欢迎在评论区、交流分享哦!

收藏 评论0 发布时间:2026-7-1 15:35

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版