首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态链接错误

动态链接错误
EN

Stack Overflow用户
提问于 2009-01-20 15:02:43
回答 3查看 1.2K关注 0票数 1

我正在观察一些行为,我发现很难对其进行推理。

我有一段代码如下:

代码语言:javascript
复制
int timer_temp_var;

if ((timer_temp_var/1000.0) > 5.0) 
{
  //Do something
}

这个片段会导致链接错误。

代码语言:javascript
复制
> 
> dld: warning: Undefined symbol _d_fle"
> dld: no output written make[1]: ***
> [app.elf] Error 1

但在将相等检查替换为:

代码语言:javascript
复制
if ((timer_temp_var/1000.0) < 5.0)  // replace '>' with '<'.

我看不出有什么问题。

同样,如果我除以1000.0,而不是除以1000,如下所示:

代码语言:javascript
复制
 if ((timer_temp_var/1000) > 5) 
    {
      //Do something
    }

不管是哪种平等检查,我都看不到任何问题。

该应用程序被编译为在pSOS操作系统上运行。

这种行为的原因是什么?

EN

回答 3

Stack Overflow用户

发布于 2009-01-20 15:23:40

似乎你的编译器用对_d_fle()函数的调用代替了">“操作符,所以你需要将一些库链接到你的可执行文件中。

令人惊讶的是,"<“可以工作,尽管它应该替换为最有可能位于同一个库中的d_fgt()函数。

从CPU改为100会使">“的左操作数变成整数,似乎整数比较不需要任何函数调用--很可能编译成CPU指令而不是函数调用。

编辑:看起来你需要SFPE (软件浮点仿真)库。你有像libsfpe这样的东西吗?

票数 2
EN

Stack Overflow用户

发布于 2009-01-20 15:27:35

从1000.0到1,000的变化表明浮点运算存在问题。尝试将1000.0转换为(int),看看是否有任何进展。

将符号<更改为>听起来不合理,不会导致任何更改...

票数 1
EN

Stack Overflow用户

发布于 2009-01-20 20:35:45

您缺少一个浮点库。尝试包含数学库(libm.a),看看这样做是否有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/461655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档