公斤到磅转换器构建错误 (CLion)
Kg to pounds converter build error (CLion)
我刚开始通过阅读本书学习 C++ 编程语言 "C++ Primer Plus 5th addition",但我遇到了一个问题。这本书刚开始详细介绍函数、函数原型、函数头,such.I 决定尝试制作一个 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\generated677da2677da2\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.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\generated677da2677da2\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
您的 mingw 设置存在某种问题,因为您的编译器无法找到 c:\mingw\include\math.h 文件中使用的函数。但是,您的代码实际上并不需要 header 。您可以删除 #include 行,它将编译并且 运行 就好了。 (测试过)
你确实需要解决你的 mingw 设置,但是如果你想在其他程序中使用它 header。
如果您仍然遇到错误,很可能是因为您使用了另一个 header。重新安装 MinGW,检查哪些文件应该包含缺少的功能,并尝试在您的机器上找到它们。
您的第一个问题(<cmath>
)与 重复;您可以按照 therin 中描述的那样解决潜在问题,(但是为什么要在学习过程的早期就规定编译器选项来调用严格的 ANSI 一致性检查呢?)
第二个问题当然值得进一步研究;这可能是由于多种原因造成的,其中包括:
您对要保存的目录没有写权限newproject.exe
;可能看起来不太可能,但无论如何都要检查一下。
此目录中已存在的 newproject.exe
被标记为 "read only",或归其他用户所有,而您未被授予写入权限。
另一个进程在 newproject.exe
上有写锁,这阻止了 ld.exe
获得写访问权。
newproject.exe
已经作为某个不是文件的实体存在(也许是目录)。
一些其他原因,spring 现在不在意。
在我看来,这不像是 MinGW 安装问题,但我建议您通过从等式中删除 CLion 来消除这种可能性,并直接从命令行发出适当的构建命令;作为实习程序员,学习如何做到这一点总是好的,在你用任何更高级别的构建系统搅浑水之前。
我刚开始通过阅读本书学习 C++ 编程语言 "C++ Primer Plus 5th addition",但我遇到了一个问题。这本书刚开始详细介绍函数、函数原型、函数头,such.I 决定尝试制作一个 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\generated677da2677da2\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.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\generated677da2677da2\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
您的 mingw 设置存在某种问题,因为您的编译器无法找到 c:\mingw\include\math.h 文件中使用的函数。但是,您的代码实际上并不需要 header 。您可以删除 #include 行,它将编译并且 运行 就好了。 (测试过)
你确实需要解决你的 mingw 设置,但是如果你想在其他程序中使用它 header。
如果您仍然遇到错误,很可能是因为您使用了另一个 header。重新安装 MinGW,检查哪些文件应该包含缺少的功能,并尝试在您的机器上找到它们。
您的第一个问题(<cmath>
)与
第二个问题当然值得进一步研究;这可能是由于多种原因造成的,其中包括:
您对要保存的目录没有写权限
newproject.exe
;可能看起来不太可能,但无论如何都要检查一下。此目录中已存在的
newproject.exe
被标记为 "read only",或归其他用户所有,而您未被授予写入权限。另一个进程在
newproject.exe
上有写锁,这阻止了ld.exe
获得写访问权。newproject.exe
已经作为某个不是文件的实体存在(也许是目录)。一些其他原因,spring 现在不在意。
在我看来,这不像是 MinGW 安装问题,但我建议您通过从等式中删除 CLion 来消除这种可能性,并直接从命令行发出适当的构建命令;作为实习程序员,学习如何做到这一点总是好的,在你用任何更高级别的构建系统搅浑水之前。