keil 报错 Error: L6218E: Undefined symbol (referred from main.o).
最近想移植fatfs文件系统(R0.09)到stm32上,结果文件系统添加进去后编译都没有错误,链接时总是报这两个错误spi_sd.axf:Error:L6218E:Un...
最近想移植fatfs文件系统(R0.09)到stm32上,结果文件系统添加进去后编译都没有错误,链接时总是报这两个错误
spi_sd.axf: Error: L6218E: Undefined symbol f_gets (referred from main.o).
spi_sd.axf: Error: L6218E: Undefined symbol f_puts (referred from main.o).
f_gets和f_puts这两个函数在ff.c里面 也挂了ff.h这个库。这两个错误到底怎么回事呢? 展开
spi_sd.axf: Error: L6218E: Undefined symbol f_gets (referred from main.o).
spi_sd.axf: Error: L6218E: Undefined symbol f_puts (referred from main.o).
f_gets和f_puts这两个函数在ff.c里面 也挂了ff.h这个库。这两个错误到底怎么回事呢? 展开
4个回答
展开全部
在ffconf.h里面找到:
#define _USE_STRFUNC 0
改成:
#define _USE_STRFUNC 1
重新编译后即可。
#define _USE_STRFUNC 0
改成:
#define _USE_STRFUNC 1
重新编译后即可。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这都是ffconf.h中的宏定义没有配置好的缘故,一个宏定义对应一个函数,格式输入输出函数对应的宏定义是_USE_STRFUNC,将其改成1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是这样的,你那两个函数是在ff.c里面没错,但是,你在main.c里面调用了这两个函数,而你的main.c里面肯定没有ff.h这个头文件,所以会出错。
改正方法:
你把那两个函数的声明复制到main.c里,例如:
你原来的函数是这样定义的:
void symbol_f(void)
{
.....
}
你就把前面部分复制到main.c里面,注意,最后要加分号:
void symbol_f(void);
像上面的样子,再链接就没错了,这叫外部引用。
改正方法:
你把那两个函数的声明复制到main.c里,例如:
你原来的函数是这样定义的:
void symbol_f(void)
{
.....
}
你就把前面部分复制到main.c里面,注意,最后要加分号:
void symbol_f(void);
像上面的样子,再链接就没错了,这叫外部引用。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询