[应用方案] 关于weak函数无法被库函数重载的问题

[复制链接]
 楼主| match007 发表于 2022-8-9 21:14 | 显示全部楼层 |阅读模式
描述
在Keil中,如果在 lib01.a 中定义了 WEAK foo(),而在 lib02.a 中定义了 foo(),最后链接成 axf 文件的时候,会使用 lib01.a 中的 weak 定义。

为什么会遇到这个问题
我想将驱动封装成库,比如 Systick_IRQHandler Strong定义也放在这里面,发现最后执行的是 startup.s 中的 Systick_IRQHandler ,一旦执行 Delay 就跑不下去了。


解决办法
参考Keil HELP关于WEAK的说明,将 Strong foo() 放到直接生成 axf 文件的工程(有啥学名没有)中。

The Future
有没有更好的办法,我实在不想在用户应用中看到驱动源码。
天天向善 发表于 2022-9-15 11:42 | 显示全部楼层
将 Strong foo() 放到直接生成 axf 文件的工程中,这一步怎么做?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

97

主题

607

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部