请教:如何解决CodeWarrior的Link Error:L822?
最近在调试基于飞思卡尔MC9S12XHY256的软件,开发环境是CodeWarrior V5.1。编译的时候能通过,不过在Link的时候出现了以下错误:
Link Error : L1822: Symbol _FCMP in file F:\Freescale\TFT_PRO\TFT_PRO_Data\Standard\ObjectCode\V2Vin.c.o is undefined
Link Error : L1822: Symbol _FMUL in file F:\Freescale\TFT_PRO\TFT_PRO_Data\Standard\ObjectCode\V2Vin.c.o is undefined
Link Error : L1822: Symbol _FUTRUNC in file F:\Freescale\TFT_PRO\TFT_PRO_Data\Standard\ObjectCode\V2Vin.c.o is undefined
Link Error : L1822: Symbol _FDIV in file F:\Freescale\TFT_PRO\TFT_PRO_Data\Standard\ObjectCode\V2Vin.c.o is undefined
Link Error : Link failed
我是在main.c里面调用了V2Vin.c里面的函数,出现问题的两个函数,均包含浮点型变量。
函数1入参为浮点型变量,函数2入参为结构体,里面包含两个浮点型变量。
调用其他未包含浮点型变量的函数则没问题。
我在新建工程时,没有选择支持浮点型变量。如果我去选择的话,则Link能通过,但是其他功能都不正常了。
我在论坛获得了大家很多的帮助,无以为报,这里选择悬赏莫元的方式来感谢为这里帮助我的人。
莫元不多,聊表心意。谢谢大家!
自己沙发一下 补充一句,我在原工程把浮点型变量宏定义为长整型变量也不能Link {:cry:}没有人看到吗 如果工程中用到浮点变量的话,那新建工程是要选择浮点库的。
把你的工程发上来看看 FSL_TICS_LY 发表于 2014-7-10 11:57
如果工程中用到浮点变量的话,那新建工程是要选择浮点库的。
把你的工程发上来看看 ...
{:sad:} 我也想发,不过按照公司规定不能发。 我在这里贴一些代码吧,其中,注释掉的是有问题的
static void s_DispExtVideo( void )
{
T_V2VINBCD_SCALE tV2VinBcdScale;
T_V2VINBCD_AREAtV2VinBcdArea;
V2VdcCont(128);
V2VdcBright(32);
V2VinBcdExtSync(TRUE);// External synchronization control
//V2VinBcdXPos(8); // Backdrop plane display start coordinate setting
V2VinBcdXFlip(FALSE); // Backdrop plane mirror inversion function
tV2VinBcdScale.Enable = TRUE;
tV2VinBcdScale.Fx = 864;
tV2VinBcdScale.Fy = 625;
tV2VinBcdScale.Mode = 0;
//V2VinBcdScale( &tV2VinBcdScale ); // Backdrop plane scaling setting
tV2VinBcdArea.Sx = 1;
tV2VinBcdArea.Sy = 1;
tV2VinBcdArea.Height = 799;
tV2VinBcdArea.Width = 479;
V2VinBcdArea( &tV2VinBcdArea ); // Backdrop plane display area specification
V2VinBcdDisp( TRUE, FALSE, 0 ); // Backdrop plane - Display control
} 我再加上那个结构体,F32就是float
typedef struct {
Bool Enable; /* Scaling function ON/OFF */
U08 Mode; /* Interpolation Method Selection */
F32 Fx; /* X Scaling Setting */
F32 Fy; /* Y Scaling Setting */
} T_V2VINBCD_SCALE FSL_TICS_LY 发表于 2014-7-10 11:57
如果工程中用到浮点变量的话,那新建工程是要选择浮点库的。
把你的工程发上来看看 ...
有同事建议我看看是不是头文件没有包含完全的问题,我仔细找过,都包含了。 你刚开始的帖子里边说如果选择浮点支持的话,别的功能就出问题,那出的问题是什么问题? FSL_TICS_LY 发表于 2014-7-10 12:06
你刚开始的帖子里边说如果选择浮点支持的话,别的功能就出问题,那出的问题是什么问题? ...
有可能是工程环境设置的问题,具体我还没找到原因。
出现的问题是:用非浮点的工程可以用SPI读写外围芯片,用浮点的工程则不行。 建议楼主还是把时间用在解决SPI读外围芯片的问题上。
程序里边有浮点变量,支持浮点的库是必须的。
实际上,在新建工程的时候,选不选择浮点的支持主要是选择工程中是否要添加支持浮点的库。这个库存在CW V5.1安装目录的{cw}\lib\HC12c\lib。
库的说明在{CWS12v5.1}\lib\HC12c的readme.txt. FSL_TICS_LY 发表于 2014-7-10 12:38
建议楼主还是把时间用在解决SPI读外围芯片的问题上。
程序里边有浮点变量,支持浮点的库是必须的。
实际上 ...
那请问,已经建立好的工程(我不想重新新建一个),能设置使用浮点库吗?
如果能,应该怎么设置呢? 可以,楼主可以新建一个带浮点的工程,然后看看这个新建工程中用到的是那个库。然后在你的工程里边,右键点击工程中包含的库,remove掉,再右键点击,add files添加相应的库文件。
还有,比较一下新建工程中“Edit”->“standard settings”中的compiler options和你自己工程中的编译选项,修改与floating有关的选项。 更换Lib库的图片 FSL_TICS_LY 发表于 2014-7-10 14:40
更换Lib库的图片
好的,谢谢啊,我刚才新建带浮点库的工程,已经可以正常编译和通信了,谢谢啊{:lol:} 不用客气{:biggrin:} 进来学习一下
页:
[1]