2天前,我很兴奋地注意到MinGW-w64发布了它的gcc 8.1.0,修订版0.不幸的是,一个简单的程序
#include <filesystem>
int main() {}
无法编译。它导致<filesystem>
内的一堆错误,从
C:/MinGW/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/bits/fs_path.h: In member function 'std::filesystem::__cxx11::path& std::filesystem::__cxx11::path::operator/=(const std::filesystem::__cxx11::path&)':
C:/MinGW/mingw32/lib/gcc/i686-w64-mingw32/8.1.0/include/c++/bits/fs_path.h:237:47: error: no match for 'operator!=' (operand types are 'std::filesystem::__cxx11::path' and 'std::filesystem::__cxx11::path')
|| (__p.has_root_name() && __p.root_name() != root_name()))
~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
谁应该为此负责?或者更好的是,报告错误的对象是谁?
答案 0 :(得分:3)
此问题可能是由于gcc分发(mingw-w64)或编译器本身(gcc)。
首先,更可能的假设我认为它可能是分发的问题,所以我刚刚将它作为bug添加到mingw-w64的sourceforge网站。
https://sourceforge.net/p/mingw-w64/bugs/737/
如果他们发现这是gcc的问题,可以将其重新编入编译器网站(gcc.gnu.org)。
让我们等一下,看看他们在sourceforge上的答案。
马
答案 1 :(得分:1)
因此,我将为您提供类似错误的完整证明解决方案,当有人尝试使用STL标头文件#include
因此,发生此错误是因为您当前正在使用MinGW网站上默认的GCC版本8.2.0。 要解决此问题,您需要更新到GCC 10.2.0
以下是您需要执行的步骤:- 1.)从https://www.msys2.org/下载并安装Msys2 2.)运行或启动它,然后输入pacman -Syu并按Enter键,然后将要求您继续输入Y / N,只需按Enter键而不按Y / n键即可。 3.)关闭此命令,然后再次启动msys2,至少运行此命令2-3次,直到显示无关或更新为止。 4.)同样,我也共享指向youtube视频的链接。 https://www.youtube.com/watch?v=aXF4A5UeSeM&
5。)要检查是否已成功安装GCC 10.2.0,请打开cmd并键入GCC --version,然后按Enter键,如果它显示10.2.0则表示您已成功完成此操作,请耐心等待。 6.)现在,卸载Clion或您正在使用的任何IDE。 7.)在重新安装它之前,您需要删除一些剩余的Jetbrains转储文件,这些文件显示在程序文件文件夹中(名称为Jetbrains)。删除该文件夹并重新安装。 8.)现在选择Msys2 / MingW-64,而不是安装时已经在系统中的前一个(普通MinGW)。 9.)现在,您可以转到“添加或删除程序”部分,并可以删除浪费正常的MinGW-64的文件,而不是msys2(不要删除msys2)仅删除ming64的前一个文件。 10.)现在,您可以享受运行该性感的stl库而没有任何错误了。
不过,您在执行这些步骤时遇到任何问题,只需在评论中问我即可。 谢谢你们。
答案 2 :(得分:-1)
这是c ++ 17和文件系统之间的问题,也许此链接会有所帮助。 issue regarding MinGW-w64 8.1.0 compile issue