1

「C++ Primer Plus 5th add」という本を読んでC++プログラミング言語を学び始めたばかりですが、問題が発生しています。この本は、関数、関数プロトタイプ、関数ヘッダーなどについて詳しく説明し始めたばかりです。練習として KG --> ポンド変換器を作成することにしましたが、私の問題は、それを構築しようとするときです (私は CLion を使用しています) ) ビルド エラーが発生します。

コード:

#include <cmath> // [EDIT] Removed this line as it isnt being used
#include <iostream>
using namespace std;

double pounds_converter(double);
int main()
{
    cout << "Welcome to the kg to pounds convertor" << endl;
    cout << "Enter the desired kg's to change to pounds: ";
    double my_kg;
    cin >> my_kg;
    double pounds = pounds_converter(my_kg);
    cout << my_kg << " in pounds is: " << pounds << endl;
    cin.get();
    return 0;
}

double pounds_converter(double n)
{
    return 2.2046226218 * n;

}

最初のビルド エラー:

"C:\Program Files (x86)\JetBrains\CLion 1.0.3\bin\cmake\bin\cmake.exe"
--build C:\Users\Admin\.clion10\system\cmake\generated\23677da2\23677da2\Release
--target newproject -- -j 8 Scanning dependencies of target newproject [100%] Building CXX object CMakeFiles/newproject.dir/main.cpp.obj In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\cmath:44:0,
                 from C:\Users\Admin\ClionProjects\newproject\main.cpp:1: c:\mingw\include\math.h: In function 'float hypotf(float, float)': c:\mingw\include\math.h:635:30: error: '_hypot' was not declared in this scope  { return (float)(_hypot (x, y)); }
                              ^ mingw32-make.exe[3]: *** [CMakeFiles/newproject.dir/main.cpp.obj] Error 1 mingw32-make.exe[2]:
*** [CMakeFiles/newproject.dir/all] Error 2 mingw32-make.exe[1]: *** [CMakeFiles/newproject.dir/rule] Error 2 mingw32-make.exe: *** [newproject] Error 2 CMakeFiles\newproject.dir\build.make:53: recipe for target 'CMakeFiles/newproject.dir/main.cpp.obj' failed CMakeFiles\Makefile2:59: recipe for target 'CMakeFiles/newproject.dir/all' failed CMakeFiles\Makefile2:71: recipe for target 'CMakeFiles/newproject.dir/rule' failed Makefile:108: recipe for target 'newproject' failed

#include cmath 行は不要であり、プログラムで使用されていないため、削除した後、もう一度ビルドしようとしましたが、次のような別のエラーが発生しました。

"C:\Program Files (x86)\JetBrains\CLion 1.0.3\bin\cmake\bin\cmake.exe" --build C:\Users\Admin\.clion10\system\cmake\generated\23677da2\23677da2\Release --target newproject -- -j 8
Linking CXX executable newproject.exe
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot open output file newproject.exe: Permission denied
collect2.exe: error: ld returned 1 exit status
CMakeFiles\newproject.dir\build.make:86: recipe for target 'newproject.exe' failed
CMakeFiles\Makefile2:59: recipe for target 'CMakeFiles/newproject.dir/all' failed
CMakeFiles\Makefile2:71: recipe for target 'CMakeFiles/newproject.dir/rule' failed
Makefile:108: recipe for target 'newproject' failed
mingw32-make.exe[3]: *** [newproject.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/newproject.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/newproject.dir/rule] Error 2
mingw32-make.exe: *** [newproject] Error 2
4

2 に答える 2

0

コンパイラがc:\mingw\include\math.hファイルで使用されている関数を見つけられないため、mingw のセットアップに何らかの問題があります。ただし、実際にはコードにそのヘッダーは必要ありません。行#includeを削除すると、問題なくコンパイルおよび実行されます。(テストしました)

ただし、そのヘッダーを他のプログラムで使用する場合は、mingw のセットアップを解決する必要があります。

それでもエラーが発生する場合は、使用した他のヘッダーが原因である可能性が最も高いです。MinGW を再インストールし、不足している関数を含むファイルを確認し、マシン上でそれらを見つけようとします。

于 2015-05-27T12:11:22.560 に答える
0

あなたの最初の問題 (と) は、この質問<cmath>の複製です。Therin で説明されているように、根本的な問題を修正できます (ただし、学習プロセスの早い段階で厳密な ANSI 準拠チェックを呼び出すコンパイラ オプションを規定しているのはなぜですか?)

2 番目の問題は、さらに調査する価値があります。それは、いくつかの原因のいずれかが原因である可能性があります。

  • 保存しようとしているディレクトリに書き込み権限がありませんnewproject.exe。可能性は低いと思われるかもしれませんが、とにかく確認してください。

  • このディレクトリ内の既存のnewproject.exeは、「読み取り専用」としてマークされているか、別のユーザーが所有しており、書き込み権限が付与されていません。

  • 別のプロセスが に書き込みロックを持っているため、newproject.exe書き込みld.exeアクセスを取得できません。

  • newproject.exeファイルではない何らかのエンティティとしてすでに存在します(おそらくディレクトリ)。

  • 他の理由ですが、今は思い浮かびません。

これは MinGW のインストールの問題とは思えませんが、方程式から CLion を削除してこの可能性を排除し、適切なビルド コマンドをコマンド ラインから直接発行することをお勧めします。見習いプログラマーとして、より高いレベルのビルドシステムで水を濁す前に、その方法を学ぶことは常に良いことです.

于 2015-05-28T07:46:23.903 に答える