atof

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

atof

2,615 次查看
Emoretti
Contributor I

Hi, i write this simple code for mcf51jm128 and the compiler send this error

 

please help

 

 

 

" Link Error   : Undefined : "atof" Referenced from "main" in main.c "

and

Link Error   : Undefined : "atoi"  Referenced from "main" in main.c "

 

 

#include <stdlib.h>
static char s[] = "-49.3";

static char t[]= "125";

float f;

int i;

void main(void) {

  f = atof(s);
  i = atoi(t);
 

标签 (1)
标记 (1)
0 项奖励
回复
4 回复数

864 次查看
jky
Contributor I

Hello,

 

I have Codewarrior 6.2 and am compiling for a coldfire V1 chip.

 

I solved this problem:

 

1.  Libraries in project

            fp_coldfire_ieee_nodiv.a

            C_4i_CF_RegABI_Runtime.a

            C_4i_CF_RegABI_MATH_MSL.a

 

2. Open up  MSL_C.CF.v1.mcp project file.

    a.  Set target to MATH 4i ColdFire RegABI

    b.  Open ansi_prefix.CF.v1.h

            1. add   #define __CF_USE_FULL_LIBS__     1 

                   at the start of file 

 

            2. change #define _MSL_HIWARE_COMP  1 to 

                          #define _MSL_HIWARE_COMP   0

            3. change #define _MSL_C99    0  to 

                          #define _MSL_C99    1

 

    c. add ansi_fp.c to  to project it is in directory

            <wherever Codewarrior instaled>\Coldfire_Support\msl\MSL_C\MSL_Common_Embedded\Src

 

    d. build MATH 4i ColdFire RegABI target

 

If we did everything right it should build fine.  And a check mark will appear next to C_4i_CF_RegABI_MATH_MSL.a library in your application project.

 

Then viola atof will link.

 

When I did this my binary image grew about 6K

 

Oh before I did this I had already done the fix for %f format

working  FAQ 28628

 

Don't know if you have to this first to wore out to undo and

see if it matters..  But if you want to print floats you will have

to follow FAQ 28628 

 

Hope this helps

 

John

  

0 项奖励
回复

864 次查看
Emoretti
Contributor I

helo

 

 i ´am create a new project with the wizard and load this libraries, I´am uninstal and instal codwarrior and send Link Error   : Undefined : "atof"

 

plese help

 

fp_coldfire_nodiv.a

C_4i_CF_RegABI_MATH_MSL.a

C_4i_CF_RegABI_Runtime.a

 

 

or read 

 

Help\PDF\ColdFireV1_Build_Tools_Reference.pdf, chapter 20, ColdFire Runtime Libraries.

 

Daniel

0 项奖励
回复

864 次查看
CompilerGuru
NXP Employee
NXP Employee

Hmm,

not sure why those methods are not defined.

atoi can easely be implemented based on strtol:

 

int atoi(const char * str){  return(strtol(str, NULL, 10));}

For atof all the source code is available, not sure why it is not built into the library.

 

You can add those files to your project to get a working atof implementation:

 

ColdFire_Support\msl\MSL_C\MSL_Common\Src\strtold.c

ColdFire_Support\msl\MSL_C\MSL_ColdFire\Src\math_cf.c

ColdFire_Support\msl\MSL_C\MSL_Common\Src\scanf.c

ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Src\ansi_fp.c

 

As alternative a simple special purpose atof might save a bit of flash space.

 

Daniel

 

0 项奖励
回复

864 次查看
CompilerGuru
NXP Employee
NXP Employee

This means that you do not link the corresponding library.

 

Create a new project with the wizard to see which libraries to use

 

or read 

 

Help\PDF\ColdFireV1_Build_Tools_Reference.pdf, chapter 20, ColdFire Runtime Libraries.

 

Daniel

0 项奖励
回复