打印
[应用方案]

关于weak函数无法被库函数重载的问题

[复制链接]
627|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝