gcc mingw32_gt_pch_use_address中内部错误,位于config/i386/host-mingw 32.c:190:MapViewOfFileEx:试图访问无效地址

rm5edbpk  于 2023-04-21  发布在  其他
关注(0)|答案(6)|浏览(632)

mingw32_gt_pch_use_address中内部错误,位于config/i386/host-mingw 32.c:190:MapViewOfFileEx:试图访问无效地址。
我在sublime-text 3中编译c++程序时遇到这个错误。
如何解决这个错误?

vsmadaxz

vsmadaxz1#

在我的例子中,这个问题是由于#include<bits/stdc++.h>。注解这一行并获取#include <iostream>来解决问题。
如果你已经预编译了<stdc++.h>,那么你在这个路径下有stdc++.h.gch文件(路径可能会根据你安装MinGW的位置和版本而有所不同):
C:\MinGW\lib\gcc\mingw32\9.2.0\include\c++\mingw32\bits
所以为了解决这个问题,删除stdc++.h.gch文件,并将这两个命令粘贴到终端中:
1.转到命令行中具有预编译头的路径
cd C:\MinGW\lib\gcc\mingw32\9.2.0\include\c++\mingw32\bits

  1. Precompile header(我的版本是c17)
    g
    -std=c++17 stdc ++.h
    我在codechef讨论中找到了这个解决方案,它对我很有效。
hmmo2u0o

hmmo2u0o2#

我安装CodeBlocks后遇到了这个问题,可能是因为代码块MINGW的设置。我最初的MinGW来自DEV-C++。
所以我做了这个。
1.从PATH中删除"C:\...\GnuWin"
2.确保你有编译器的旧路径。

fykwrbwg

fykwrbwg3#

对我来说,这个错误弹出的权利后,我更新了我的sublimeText应用程序到最新版本,所以只需重新启动系统为我工作!

vs91vp4v

vs91vp4v4#

我不知道是什么导致了这个问题,但我以前见过几次。
对我来说,一个完整的清理和重新编译解决了它。

w8rqjzmb

w8rqjzmb5#

我在预编译stdc++.h文件后遇到了同样的问题,为了消除这个错误,我删除了这个头文件的编译版本,即stdc++.gch
stdc . h和stdc.gch的文件路径为

C:\Users\UserName\Downloads\MinGW\include\c++\9.2.0\x86_64-w64-mingw32\bits
shyt4zoc

shyt4zoc6#

如果您使用的是gcc-9.2.0-1 MinGW包,则可能会出现此问题。引用bustercopley from ASLR is now enabled for GCC binaries and it breaks PCH #5719
新的gcc-9.2.0-1包中的二进制文件在其PE头中启用了ASLR。这会破坏使用预编译头,因为它们不再可以Map到可预测的地址。以前的包有“好”的二进制文件,但禁用了ASLR。(这不是包本身的变化。我重建了9.1.0-3包,得到的二进制文件是“坏”的。)I raised this on the GCC bug tracker
[...]
在gcc软件包的新版本发布之前,解决方法是从cc1.exe和cc1plus.exe中删除ASLR标志(例如,使用setdllcharacteristics,您可能更喜欢自己编译)或从现有的PKGBUILD脚本(已更新binutils)重建gcc。
已在2602139中修复了该问题,另一位用户报告称,在升级到gcc-9.2.0-2后,该问题已得到修复。
为了您的参考/学习目的,我通过谷歌搜索“"internal error in mingw32_gt_pch_use_address, at config/i386/host-mingw32.c" "MapViewOfFileEx: Attempt to access invalid address."”找到了这个,这让我找到了https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101183,它指向https://github.com/msys2/MINGW-packages/issues/5719

相关问题