首页| 论坛| 消息

标题:目标机上QString转换成float出问题:((结贴)
作者:onebyte
日期:2006-10-10 16:09
内容:

我在程序中用 了二种方法从QString转换成float
(1)floatxx=(leXX->text()).toFloat();
(2)char *pXX=new char[20];
strcpy(pXX,leXX->text());
float xx=atof(pXX);
上面程序中leXX是QLineEdit的指针。而所指的QLineEdit用于输入xx的值。
另外我用gdb远程调试时看过leXX->text()的返回值,是输入时的数据。:(
该段程序在宿主机上不论用QT库还是QTE库,都运行正常。但移植到目标机上(SBC-2410)后,无论输入什么数,最后结果都是0;
而且在移植到目标机后对于语句:QString str=QString::number(xx,'f',2);(无论xx是什么数字)。都会引起段错误。(上述程序在宿主机上运行均正常)
我用的是QTE3.3.4的库。实在不清楚为什么会出现以上问题,我应该怎样着手查出相应的错误呢?(太奇怪的毛病了:()


#1 [onebyte 10-11 17:29]
我通过下面的小程序进行了测试
#include
#include
int
main ( int argc, char *argv[] )
{
char *xx="0.9";
double aa=atof(xx);
printf("aa=%lf\n",aa);
double bb=0.9;
printf("bb=%lf\n",bb);
return 0;
}
如果 aa 定义为float型,则在目标机上运行会出现非法命令错误。illegal instruction
但如果我用double,则最后输出为
aa=0.000000
bb=0.900000
请问这种情况是不是说明我的系统库存在问题?
我应该怎样解决这类错误:(
搞了两天了,还没有办法。真是郁闷:(
#2 [onebyte 10-17 17:15]
我把系统库换掉了,然后一切正常了:)
#3 [wjydlut 11-01 16:32]
你好 !我也遇到同样的错误 ,请问所说的换系统库是指换那些库呀 ? 谢谢 !
#4 [xuxinshao 08-22 16:02]
onebye有空讲下替换了那些库啊?

回复 发表
主题 版块