STM8中加入库函数报错

king315   2010-4-19 15:46 楼主
引用了"math.h"中的开平方:sqrt()
在include中也添加了math.h文件。
但编译时报错,请大侠指教

回复评论 (15)

                                 请说清楚编译时报的什么错?
点赞  2010-4-19 16:00
报错是:
#error clnk Debug\ledwritor.lkf:1 symbol _sqrt not defined (Debug\main.o )
The command: "clnk -m Debug\ledwritor.map -lD:\stm8\COSMIC\CXSTM8_16K\Lib  -o Debug\ledwritor.sm8 Debug\ledwritor.lkf " has failed, the returned value is: 1
exit code=1.

加入的头文件math.h里面只做了声明,没有其它都分。里面的函数在哪里我找不到。。
点赞  2010-4-19 16:05
报错是:
#error clnk Debug\ledwritor.lkf:1 symbol _sqrt not defined (Debug\main.o )
The command: "clnk -m Debug\ledwritor.map -lD:\stm8\COSMIC\CXSTM8_16K\Lib  -o Debug\ledwritor.sm8 Debug\ledwritor.l ...
问题出在链接的时候,应该在"Linker"那个页面进行设置。
需要链接类似于:libis.sm8、libm.sm8这样的库文件。
点赞  2010-4-19 17:29
                                 应该是差链接文件
点赞  2010-4-19 21:17
4楼正解,俺再添上脚。
点赞  2010-4-19 21:19
                                 补充的很不错,呵呵,我都明白了
点赞  2010-4-19 21:45
我也是这样做了,勾了个float。编译过了,但还是不行的。试试赋值给变量,再用单步调试看看,变量的值不变。如6楼的图:lu32Tmp=25;
lu32Result=sqrtlu32Tmp();
在watch变看到变量不变。
更难懂的是如果这样做就能改变了:
lu32Tmp=25;
lu32Tmp++;
lu32Result=sqrtlu32Tmp();
lu32Result++;

在家试试看,我用的stvd是4.1.3
点赞  2010-4-20 12:43
lu32Tmp=25;
(在这用指令隔开)
lu32Result=sqrtlu32Tmp();

在两条指令中隔着一些指令,lu32Tmp=25;就能正常执行
点赞  2010-4-20 12:49
                                 是不是时间间隔太短,要延时
点赞  2010-4-20 20:14
                                 lu32Tmp=25不就只是一个赋值语句吗
点赞  2010-4-20 21:20
                                 就是赋值语句都失灵了,会是时间间隔太短,要延时吗??
点赞  2010-4-25 12:32
                                 按6楼的方法还没解决问题啊。。。难道大家都不用库函数吗?
点赞  2010-4-25 12:38
                                 真是郁闷,为什么这么基础的问题没有人给到一个满意的答案呢?难道大家从来都不用库函数?最后还是自己去写开方函数了。。。还是没弄出为什么调用不到
点赞  2010-5-4 15:05
                                 把Libraries那里也指定好库的路径
点赞  2010-5-8 11:06
大家好,我刚刚接触STM8,上个月买了块官方的STM8开发板,买家没有提供例程,只是告诉我几个网址,叫我自己登录那几个网址,到现在我还是一头雾水!对于官方那些库我根本看不懂,有没有更好的办法?
点赞  2012-5-24 11:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复