第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

未定義對sqrt的引用(或其他數(shù)學(xué)函數(shù))

未定義對sqrt的引用(或其他數(shù)學(xué)函數(shù))

C
梵蒂岡之花 2019-12-15 14:08:34
我有這個簡單的代碼:max = (int) sqrt (number);在標(biāo)題中,我有:#include <math.h>但是應(yīng)用程序仍然說未定義的引用sqrt。您在這里看到任何問題嗎?看起來一切都應(yīng)該沒問題。
查看完整描述

3 回答

?
蠱毒傳說

TA貢獻(xiàn)1895條經(jīng)驗 獲得超3個贊

這是我的觀察,首先需要將標(biāo)頭math.h作為標(biāo)頭文件中sqrt()聲明的函數(shù)包括在內(nèi)math.h。例如


#include <math.h>

其次,如果您閱讀sqrt的手冊頁,您會注意到該行-lm。


#include <math.h> /* header file you need to include */


double sqrt(double x); /* prototype of sqrt() function */


Link with -lm. /* Library linking instruction */

但是應(yīng)用程序仍然說未定義對sqrt的引用。您在這里看到任何問題嗎?


編譯器錯誤是正確的,因為您尚未將程序與庫lm鏈接并且鏈接器無法找到的引用sqrt(),您需要顯式鏈接。例如


gcc -Wall -Wextra -Werror -pedantic test.c -lm



查看完整回答
反對 回復(fù) 2019-12-16
?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗 獲得超6個贊

您可能會發(fā)現(xiàn)您必須與所使用的任何系統(tǒng)上的數(shù)學(xué)庫鏈接,例如:


gcc -o myprog myprog.c -L/path/to/libs -lm

                                       ^^^ - this bit here.

包括標(biāo)題讓編譯器知道函數(shù)的聲明,但它并沒有必然自動鏈接到執(zhí)行該功能所需要的代碼。


否則,您需要向我們展示您的代碼,您的編譯命令和您正在運行的平臺(操作系統(tǒng),編譯器等)。


以下代碼可以編譯和鏈接:


#include <math.h>

int main (void) {

    int max = sqrt (9);

    return 0;

}

請注意,某些編譯系統(tǒng)取決于在命令行上給出庫的順序。那樣的話,我的意思是它們可以按順序處理這些庫,并且只能使用它們來滿足序列中該點上未解析的符號。


因此,例如,給定命令:


gcc -o plugh plugh.o -lxyzzy

gcc -o plugh -lxyzzy plugh.o

并且plugh.o需要xyzzy庫中的某些內(nèi)容,第二個可能無法正常工作。在列出庫的那一刻,沒有任何未解決的符號可以滿足。


當(dāng)從解析的符號plugh.o 都出現(xiàn),為時已晚。



查看完整回答
反對 回復(fù) 2019-12-16
  • 3 回答
  • 0 關(guān)注
  • 560 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號