スラスラC++で、実行するとエラー
C:\samples\chapter04\4_5>cd C:\samples\chapter04\4_5\
C:\samples\chapter04\4_5>g++ -o list4_5.exe list4_5.cpp
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
C:\Users\furcr\AppData\Local\Temp\ccs3yFYU.o:list4_5.cpp:(.text+0x72):
undefined reference to `getBmi(double, double)' collect2.exe: error:
ld returned 1 exit status解決方法
chapter4.h
// BMIを求める関数のプロトタイプ宣言
double getBmi(double height, double weight);getBmi.cpp
double getBmi(double height, double weight) {
double bmi; // BMIの計算結果を入れる
// cm単位をm単位にする
height /= 100;
// BMIを計算する
bmi = weight / height / height;
// 戻り値としてBMIを返す
return bmi;
}
list4_5.cpp
#include <iostream>
using namespace std;
#include "chapter4.h"
int main() {
double height; // 身長
double weight; // 体重
double bmi; // BMI
// キー入力をheightに格納する
cout << "身長(cm)を入力してください:";
cin >> height;
// キー入力をweightに格納する
cout << "体重(kg)を入力してください:";
cin >> weight;
// 身長と体重からBMIを計算する
bmi = getBmi(height, weight);
// BMIを画面に表示する
cout << "あなたのBMIは、" << bmi << "です。" << endl;
return 0;
}
cd_samples4_5_header.cmd
C:\samples\chapter04\4_5>cd C:\samples\chapter04\4_5\
C:\samples\chapter04\4_5>g++ list4_5.cpp getBmi.cpp -o list4_5.exe
C:\samples\chapter04\4_5>list4_5.exe
身長(cm)を入力してください:167
体重(kg)を入力してください:75
あなたのBMIは、26.8923です。
C:\samples\chapter04\4_5>cmd /k
C:\samples\chapter04\4_5>
- 関数の定義を確認:
chapter4.hファイル内でgetBmi(double height, double weight)関数の実装が正しく行われていることを確認してください。chapter4.hには関数のプロトタイプ宣言が含まれているはずですが、実際の関数の定義が別のファイル(おそらくchapter4.cppなど)にあるはずです。
- コンパイル時に関連するファイルを指定:
- コンパイル時に
list4_5.cppと関連するファイルを一緒に指定する必要があります。例えば、次のようにコンパイルしてみてください。
g++ list4_5.cpp getBmi.cpp -o list4_5.exechapter4.cppのファイル名は実際のファイル名に合わせて修正してください。
- コンパイル時に
- 再コンパイルと実行:
- 上記の修正を行ったら、再度コンパイルして実行してみてください。


