yangruihero
驱动牛犊
驱动牛犊
  • 注册日期2006-01-11
  • 最后登录2008-11-26
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望15点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:1627回复:2

尊敬的版主,各位高手:如果要在eboot中使用malloc应该在source文件中加入哪些库呢??非常感谢您!!

楼主#
更多 发布于:2007-07-30 16:38
尊敬的版主,各位高手:
    请教一个问题,在bootloader中如何调用malloc和free函数?
    我在eboot中调用malloc函数,编译就是无法通过,我试着在source文件中加入库,还是不行。可以告诉我如果要使用malloc应该在source

文件中加入哪些库吗??
    程序中我加了这些头文件:
    #include <stdio.h>
    #include <stdlib.h>
    但是一旦调用p_tmp_pkt = (UINT8 *)malloc(PKTLEN_1K );
    编译时就会出错:
BUILD: [01:0000000170:ERRORE] fulllibc.lib(free.obj) : error LNK2019: unresolved external symbol LocalFree referenced in

function free
BUILD: [01:0000000171:ERRORE] fulllibc.lib(malloc.obj) : error LNK2019: unresolved external symbol LocalAlloc referenced in

function _nh_malloc
BUILD: [01:0000000172:ERRORE] C:\WINCE500\platform\VIASOC\target\ARMV4I\retail\eboot.exe : fatal error LNK1120: 2 unresolved

externals
    我的source文件引用的库如下:
TARGETLIBS = \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_blcommon.lib               \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_blnk.lib                   \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_memory_arm.lib             \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_kitl.lib                   \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_log.lib                    \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_other.lib                  \
    $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\vt3300_dbgserial.lib        \
    $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\vt3300_io.lib             \
    $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\oal_ethdrv_lan91c_vt3300.lib   \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\eboot.lib                  \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ne2kdbg.lib                \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fulllibc.lib
   还缺什么呢??非常感谢您的帮助!!
shaohui99
驱动牛犊
驱动牛犊
  • 注册日期2007-05-15
  • 最后登录2008-06-19
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-31 09:28
Re:尊敬的版主,各位高手:如果要在eboot中使用malloc应该在source文件中加
如果数据量不大的话,建议直接用数组
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-04 21:02
Re:尊敬的版主,各位高手:如果要在eboot中使用malloc应该在source文件中加
malloc需要操作系统的内存管理来支持,这个东西本身很复杂,BOOT程序中一般都不会支持.

但BOOT中可以访问任意一个内在地址,所以如果要使用大内存块,直接指定一个SDRAM地址就行了.只是需要注意不要与堆栈等重叠.
学海无涯
游客

返回顶部