使用大型预编译头文件时cc1plus.exe崩溃

jad*_*dam 12 mingw precompiled-headers stack-size

我在使用MinGW预编译头文件时遇到问题.编译器似乎找到了预编译的头文件,但cc1plus.exe在cc1plus.exe停止工作后立即崩溃.

我知道这可能与cc1plus.exe的低堆栈大小有关,所以我做了以下操作来增加它:

editbin cc1plus.exe /STACK 33554432
Run Code Online (Sandbox Code Playgroud)

我也试着无济于事:

editbin cc1plus.exe /STACK 32768k
Run Code Online (Sandbox Code Playgroud)

然而,这并没有解决它,因为每当我尝试编译我的应用程序时它仍然会崩溃.

顺便说一下,如果重要的话,我正在使用最新的MinGw(gcc v 4.6.2)和最新的Eclipse CDT.

我是否正确增加了cc1plus.exe的堆栈大小?有没有人有任何线索如何继续,因为我阅读了无数的文章和主题,但我现在有点想法.

g ++似乎找到并接受我的预编译头文件:

Building file: ../src/AdvancedOgreFramework.cpp
Invoking: GCC C++ Compiler
g++ -DHAVE_W32API_H -DNO_GCC_PRAGMA -I"C:\DevelopmentTools\workspaces\workspace_cpp
\MyGame\inc" -I"C:\docs\ogre3d\CEGUI\CEGUI-0.7.6\cegui\include\falagard" -I"C:\docs 
\ogre3d\CEGUI\CEGUI-0.7.6\cegui\include\RendererModules\Ogre" -I"C:\docs\ogre3d\CEGUI
\CEGUI-0.7.6\cegui\include" -I"C:\docs\ogre3d\ogre1.8.0_mingw_sdk\OgreSDK_MinGW_v1-8-0
\include" -O0 -g3 -H -Wall -c -Winvalid-pch -MMD -MP -MF"src/AdvancedOgreFramework.d" 
-MT"src/AdvancedOgreFramework.d" -o "src/AdvancedOgreFramework.o" "../src 
/AdvancedOgreFramework.cpp"
! C:\DevelopmentTools\workspaces\workspace_cpp\MyGame\inc/Precompiled.h.gch
Run Code Online (Sandbox Code Playgroud)

这是我作为预构建make运行的makefile,用于生成我的.gch:

C_FLAGS = -O0 -g3 -Wall -c -MMD -MP
INC_PATH = -IC:/docs/ogre3d/ogre1.8.0_mingw_sdk/OgreSDK_MinGW_v1-8-0/include -IC:/docs
/ogre3d/CEGUI/CEGUI-0.7.6-mingw/cegui/include -IC:/docs/ogre3d/CEGUI/CEGUI-0.7.6-
mingw/cegui/include/RendererModules/Ogre -IC:/docs/ogre3d/CEGUI/CEGUI-0.7.6-mingw/cegui
/include/falagard


all: Precompiled.h.gch

@echo 'Finished precompiling headers....'

Precompiled.h.gch: Precompiled.h    
    @echo 'Building target: $@'
g++.exe Precompiled.h $(INC_PATH) $(C_FLAGS)     

clean:
rm Precompiled.h.gch
Run Code Online (Sandbox Code Playgroud)

.gch的大小超过169 MB,因为我试图预编译大多数Ogre3D和CEGUI标头.

亚当,谢谢你.

oll*_*g23 4

GCC有一个关于你的问题的错误报告,请参阅:http://gcc.gnu.org/bugzilla/show_bug.cgi ?id=56926,看起来大的pch文件(通常大于150M)会导致这个问题。

编辑:2015-05-31。我最近在mingw或mingw-w64工具链的GCC源中发现pch文件的硬限制值是128M。我想建议有人构建一个最新的 GCC,看看它是否可以解决这个崩溃问题。请参阅我在 mingw-w64 论坛中的帖子:[Mingw-w64-public] 设置更大的 pch 文件大小限制?是:任何人都可以提供 cc1plus.exe 的调试版本吗?

编辑:2015-06-02。我可以通过扩大 pch 文件的硬限制值来完全解决这个问题,请参阅我在 gcc bugzilla 中的评论 17

  • @ollydbg12,该报告已经发布一年多了,并且仍在计数中...看来海湾合作委员会的人们在解决这个问题上遇到了困难...也许他们需要继续进行并提供赏金:P (3认同)