sqrtf未定义对c中"sqrtf"的引用

cap*_*onk 11 c linux math.h geany

你好我使用linux 12.04和geany进行编码.我在C中编写的代码完全正常,直到我使用sqrtf命令查找浮点的平方根.错误:HAC3.c :(.text + 0xfd7):未定义对`sqrtf'的引用.

我正在使用sqrtf的代码部分:

float syn(float *a, float *b, int dimensions)
{
    float similarity=0;
    float sumup=0;
    float sumdown=0;
    float as=0;
    float bs=0;
    int i;
    for(i=0; i<dimensions; i++)
    {
        sumup = sumup + a[i] * b[i];
        as = as + a[i] * a[i];
        bs = bs + b[i] * b[i];
    }
    sumdown = sqrtf(as) * sqrtf(bs);
    similarity = sumup / sumdown;
    return similarity;
}
Run Code Online (Sandbox Code Playgroud)

我包括math.h但这似乎不是问题.所以我想知道有没有办法修复geany所以这不会再出现?我知之甚少所以尽量解释一下.

Nob*_*lis 11

转到Build- > Set Build Commands然后C commands单击空标签,它将允许您指定一个新标签(将其命名Link).输入gcc -Wall -o "%e" "%f" -lm- 在哪里-lm告诉它将math库链接到您的应用程序.点击OK.

然后单击Build并选择新创建的标签 - Link.这应该为你做.

  • 值得注意的是,必须在文件之后指定-lm标志.我错误地做了这个错误. (2认同)

Dir*_*tel 9

您需要链接-lm以提供数学函数.