c - 动态链接错误

标签 c linker

我正在观察一些我发现很难推理的行为。

我有一段代码如下:

int timer_temp_var;

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

这一段导致链接错误。

> 
> dld: warning: Undefined symbol _d_fle"
> dld: no output written make[1]: ***
> [app.elf] Error 1

但是将相等性检查替换为:

if ((timer_temp_var/1000.0) < 5.0)  // replace '>' with '<'.

我看不出有什么问题。

如果我按以下方式除以 1000,也不是除以 1000.0:

 if ((timer_temp_var/1000) > 5) 
    {
      //Do something
    }

无论哪种相等性检查,我都看不到任何问题。

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

这种行为的原因是什么?

最佳答案

似乎您的编译器用调用 _d_fle() 函数替换了“>”运算符,因此您需要将一些库链接到您的可执行文件。

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

100.0 更改为 100 使“>”整数的左操作数看起来整数比较不需要任何函数调用 - 可能它被编译为 CPU 指令而不是函数调用。

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

关于c - 动态链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/461655/

相关文章:

C、atoi()产生段错误

C:如何对结构中的值进行排序和子排序

c++ - 如何使用 qmake 在 Windows 64 位上链接到 ACML?

android - Android i.MX6 上的 OpenCL(udoo 板)

c++ - CMake:包含目录的排序(如何混合基于系统和用户的包含路径?)

c++ - Linux QT 创建者 C++ : How to link with $$HOME?

c - 使用 printf 函数而不实际导入 stdio.h 并且它有效?!为什么呢?

c - 在循环中消隐 cstrings

c - 如何用定界符解析

ios - XCode 4.2 Lion(iOS 产品)中与 Objective-C++/C++ 的链接错误