1. ホーム
  2. c

[解決済み】C言語でpow( )への未定義参照、math.hを含むにもかかわらず【重複】。

2022-02-18 14:50:44

質問

重複の可能性があります。
C言語でのpow()の使用に関する問題
pow への未定義の参照」とは何か?

ユニフォームの簡単なコースワークでちょっと問題があって、本当に困惑しています。

基本的に、私は与えられた半径から球体の体積を計算するプログラムなどを書かなければなりません。私は {{コード {コード 関数を使用するのではなく {コード しかし、コンパイラは次のようなエラーを出し続けています。

pow'への未定義の参照 collect2: error: ld returned 1 exit status

私のコードは以下のような感じです。

pow()

というコマンドでコンパイルしています。 r*r*r

これは、ユニのWindowsマシンのcode::blocksでコンパイルしてうまく実行できますが、自宅のFedora 17では、コマンドラインコンパイラが実行するのを拒否します。何かご意見がありましたら、よろしくお願いします。

ご加護を。 イアン

解決方法

数学ライブラリとリンクする必要があります。

#include <math.h>

#define PI 3.14159265 //defines the value of PI

/* Declare the functions */
double volumeFromRadius(double radius);

/* Calculate the volume of a sphere from a given radius */
double volumeFromRadius(double radius) {
    return (4.0/3.0) * PI * pow(radius,3.0f);
}

表示されているエラー gcc -o sphere sphere.c はリンカーから gcc -o sphere sphere.c -lm (オブジェクトファイルを結合する gcc の一部) は、関数 error: ld returned 1 exit status

ld は、様々な関数の宣言をもたらし、その定義はもたらさない。defは、数学ライブラリに存在する pow. pow()のような関数の呼び出しが解決されるように、プログラムをこのライブラリとリンクさせる必要があります。