2013-06-07 11 views
8

Merhaba, linux 12.04 kullanıyorum ve kodlama için geany kullanıyorum. C 'de yazdığım kod, bir floatın karekökünü bulmak için sqrtf komutunu kullanana kadar tamamen iyi çalıştı. Hata: HAC3.c :(. Text + 0xfd7): sqrtf'ye tanımsız başvuru. sqrtf undefined 'sqrtf' ile ilgili c

i sqrtf kullanıyorum kod parçası

:

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; 
} 

Ben math.h başlık dosyasını dahil ama bu sorun olarak görünmüyor. Öyleyse cehennemi düzeltmek için herhangi bir yol olduğunu merak ediyorum, bu tekrar gelmeyecek mi? Çok az bilgim var, bu yüzden mümkünse açıklamaya çalışın.

+3

. ve linker seçeneği. örneğin gcc prog.c -std = c99 -lm' – BLUEPIXY

+1

Gelecekte başvurmak için: Eğer bir şey derlenmiyorsa/link yapmıyorsa: ** man -k ** 'ye bakın, sizin durumunuzda ** man - k sqrtf ** ... nasıl kullanılacağını size söyleyecektir. – tink

+0

man -k sqrtf nedir? –

cevap

7

Git ->Set Build Commands sonra C commands boş etikette tıklama ve yeni bir etiket belirtmek sağlayacak altında (o Link isim).yazarak - -lm, uygulamanıza math kitaplık bağlantısını söyleyecektir. OK'u tıklayın.

Ardından Build'a tıklayın ve yeni oluşturduğunuz etiketinizi seçin - Link. Bu senin için yapmalı. C99'dan beri sqrtf

+0

Bu benim sorum için mükemmel bir cevap. Teşekkür ederim efendim :) –

+0

Sevindim ben yardımcı oldu :) – Nobilis

+1

Dosyalardan sonra -lm bayrağı belirtilmesi gerektiğini not etmek güzel. Bunu yanlış yapmaktan kaynaklanan bir hatam vardı. – Flipbed

7

Matematik işlevlerini sağlamak için -lm ile bağlantı kurmanız gerekir. Build için

+0

'Man sqrtf' üzerinde şunları göreceksiniz:" -lm ile bağlantı. " –

+0

Tam olarak nasıl geany ile bağlantı kurabilirim? Üzgünüm ama bilgim az –