为什么显示malloc、free、fdClose等标准函数未定义?

fish2343456 2012-06-14 04:41:03
我是个初学者,用的是DM648进行开发,写完了之后发现有好多符号未定义:
undefined first referenced
symbol in file
--------- ----------------
_ProcessSem F:\\camera\\imarsupdater\\imars\\src\\Debug\\tskInput.obj
__HOOK_switchFxnTablePtr F:\\camera\\imarsupdater\\imars\\src\\Debug\\imarsdspcfg.obj
_atoi F:\\camera\\imarsupdater\\imars\\src\\Debug\\cmdparse.obj
_exit F:\\camera\\imarsupdater\\imars\\src\\Debug\\AppEncoder.obj
_fclose F:\\camera\\imarsupdater\\imars\\src\\Debug\\alg_malloc.obj
_fopen F:\\camera\\imarsupdater\\imars\\src\\Debug\\alg_malloc.obj
_fprintf F:\\camera\\imarsupdater\\imars\\src\\Debug\\alg_malloc.obj
_free F:\\camera\\imarsupdater\\imars\\src\\Debug\\alg_create.obj
_inputSem F:\\camera\\imarsupdater\\imars\\src\\Debug\\tskClient.obj
_malloc F:\\camera\\imarsupdater\\imars\\src\\Debug\\alg_create.obj
_memalign F:\\camera\\imarsupdater\\imars\\src\\Debug\\alg_malloc.obj
_memcpy F:\\camera\\imarsupdater\\imars\\src\\Debug\\cmdparse.obj
_memset F:\\camera\\imarsupdater\\imars\\src\\Debug\\alg_malloc.obj
不知道是什么原因,还望各过路大神指点一二啊,感激不尽
...全文
2460 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cw95440894 2012-07-12
  • 打赏
  • 举报
回复
malloc在stdlib.h中、fdClose在stdio.h中,添加头文件即可!
wk59121 2012-07-12
  • 打赏
  • 举报
回复
这是库头文件 引用就可以了 裸机的话没有 操作系统有
skertone 2012-07-12
  • 打赏
  • 举报
回复
这些函数一般是建议你自已实现, 具体要实现哪些,跟你用的编译器与要使用功能有关

如果你没用一些高级功能 写个同名空函数就行了

如:没有用到文件操作 _fxxx 都是空了 或者申明 weak 一下。

在我以前的一个ARM7TDMI ADS1.2项目中,以下这些都是自已实现的这样心里踏实,其实原因是自已玩不好ADS1.2的库。,当然很多是Copy过来的,也不是自已写的

_atoi
_exit
_fclose
_fprintf
_free
_inputSem
_malloc
_memcpy
_memset

同的的工程改成 gcc 编译器时 只有文件类 fxxx 操作是自已重实现了。
zjk2752 2012-06-15
  • 打赏
  • 举报
回复
我做单片机程序也不用到这些函数的。应该单片机不像WINDOWS有操作系统,所以没有内存管理模块就不需要这些内存操作函数了。另外一方面,单片机的存储空间分配大部分都是静态的,比较简单,用不上。纯新手,一些学习。觉得楼上两位可能是对的。
lbing7 2012-06-15
  • 打赏
  • 举报
回复
_free\_malloc
这几个在KEIL平台下,有实现,其它的平台如IAR什么的,应该也会有,不过具体的情况不知道
通常在单片机前后台这个层面,个人不太推荐使用。非要动态管理,可以换成自己实现的队列这样的数据结构即可。要是非要用到动态管理,可以先回过头去看看自己的设计方案是否合适。

_memcpy
_memset
_atoi
这几个绝对是有人,而且是可以用的可以查一下库文件说明

_fclose
_fopen
_fprintf
这三个文件操作接口,和你的用的文件系统有关,必须自己去实现或者找到相应的库方可

_exit
_inputSem
_memalign
这三个,我没有印象,其它朋友补充。。。
AnYidan 2012-06-15
  • 打赏
  • 举报
回复
看看你的 compiler 支持这些功能吗?如支持,看看头文件 #include ?
schlafenhamster 2012-06-15
  • 打赏
  • 举报
回复
单片机的C程序,虽然没有OS。但C标准函数还是可以用的,但要注意C库初始化函数一定要调用。
请搜索‘C库初始化函数’
schlafenhamster 2012-06-14
  • 打赏
  • 举报
回复
#include <memory.h>
dsoyy 2012-06-14
  • 打赏
  • 举报
回复
malloc、free、fdClose等标准函数库的头文件添加了么?

没有添加怎么会有定义呢。
fish2343456 2012-06-14
  • 打赏
  • 举报
回复
为什么没人理我啊,csdn论坛没有热心人么

27,521

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧