2016-04-25 93 views
3

我想编译Trinitycore在Windows 10的Visual Studio 2013和崩溃的非静态数据成员初始化

我得到这个错误,我每个解决方案测试如Visual Studio 2013(86 & 64两个测试):

1.更改/上的Zm从/ Zm500附加选项/ Zm2000(最大)

2.停用预编译头

3.停用优化

4.re,安装Visual Studio

5.re安装Windows 10

Visual Studio的错误描述:

Error 1 error C1001: An internal error has occurred in the compiler. \TrinityCore-3.3.5\src\server\game\Server\WorldSocket.cpp 256 1 game 

Error 2 error C1060: compiler is out of heap space c\src\server\game\c1xx game 

Error 3 error D8040: error creating or communicating with child process c\src\server\game\cl game 

事件日志:

Faulting application name: CL.exe, version: 18.0.21005.1, time stamp: 0x524faabf 
Faulting module name: c1xx.dll, version: 18.0.21005.1, time stamp: 0x524faa90 
Exception code: 0xc0000005 
Fault offset: 0x0025236e 
Faulting process id: 0x1948 
Faulting application start time: 0x01d19f24d391755f 
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe 
Faulting module path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\c1xx.dll 
Report Id: d98e09ae-0b18-11e6-b361-1008b14a12cc 
Faulting package full name: 
Faulting package-relative application ID: 

VS输出错误:

TrinityCore-3.3.5\src\server\game\Server\WorldSocket.cpp(256): fatal error C1001: An internal error has occurred in the compiler. 
1> (compiler file 'f:\dd\vctools\compiler\cxxfe\sl\p1\c\convert.cpp', line 9608) 
1> To work around this problem, try simplifying or changing the program near the locations listed above. 
1> Please choose the Technical Support command on the Visual C++ 
1> Help menu, or open the Technical Support help file for more information 
1> Opcodes.cpp 
1>c1xx : fatal error C1060: compiler is out of heap space 
1>   An internal error has occurred in the compiler. 
1> (compiler file 'msc1.cpp', line 1325) 
1> To work around this problem, try simplifying or changing the program near the locations listed above. 
1> Please choose the Technical Support command on the Visual C++ 
1> Help menu, or open the Technical Support help file for more information 
1>cl : Command line error D8040: error creating or communicating with child process 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

事件日志附件:

Version=1 
EventType=APPCRASH 
EventTime=131060826745545591 
ReportType=2 
Consent=1 
UploadTime=131060826747020586 
ReportIdentifier=e3cb3d99-0b13-11e6-b361-1008b14a12cc 
IntegratorReportIdentifier=e3cb3d98-0b13-11e6-b361-1008b14a12cc 
WOW64=1 
Response.BucketId=d11da6a9b6e3e8a8c8d50161959694bb 
Response.BucketTable=1 
Response.LegacyBucketId=-389226431 
Response.type=4 
Sig[0].Name=Application Name 
Sig[0].Value=CL.exe 
Sig[1].Name=Application Version 
Sig[1].Value=18.0.21005.1 
Sig[2].Name=Application Timestamp 
Sig[2].Value=524faabf 
Sig[3].Name=Fault Module Name 
Sig[3].Value=c1xx.dll 
Sig[4].Name=Fault Module Version 
Sig[4].Value=18.0.21005.1 
Sig[5].Name=Fault Module Timestamp 
Sig[5].Value=524faa90 
Sig[6].Name=Exception Code 
Sig[6].Value=c0000005 
Sig[7].Name=Exception Offset 
Sig[7].Value=0025236e 
DynamicSig[1].Name=OS Version 
DynamicSig[1].Value=10.0.10586.2.0.0.256.48 
DynamicSig[2].Name=Locale ID 
DynamicSig[2].Value=1033 
UI[2]=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe 
UI[3]=Microsoft (R) C//C++ Optimizing Compiler has stopped working 
UI[4]=Windows can check online for a solution to the problem. 
UI[5]=Check online for a solution and close the program 
UI[6]=Check online for a solution later and close the program 
UI[7]=Close the program 
LoadedModule[0]=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe 
LoadedModule[1]=C:\Windows\SYSTEM32\ntdll.dll 
LoadedModule[2]=C:\Windows\SYSTEM32\KERNEL32.DLL 
LoadedModule[3]=C:\Windows\SYSTEM32\KERNELBASE.dll 
LoadedModule[4]=C:\Program Files (x86)\MSBuild\12.0\bin\FileTracker.dll 
LoadedModule[5]=C:\Windows\SYSTEM32\ADVAPI32.dll 
LoadedModule[6]=C:\Windows\SYSTEM32\msvcrt.dll 
LoadedModule[7]=C:\Windows\SYSTEM32\sechost.dll 
LoadedModule[8]=C:\Windows\SYSTEM32\RPCRT4.dll 
LoadedModule[9]=C:\Windows\SYSTEM32\SspiCli.dll 
LoadedModule[10]=C:\Windows\SYSTEM32\CRYPTBASE.dll 
LoadedModule[11]=C:\Windows\SYSTEM32\bcryptPrimitives.dll 
LoadedModule[12]=C:\Windows\SYSTEM32\ole32.dll 
LoadedModule[13]=C:\Windows\SYSTEM32\combase.dll 
LoadedModule[14]=C:\Windows\SYSTEM32\GDI32.dll 
LoadedModule[15]=C:\Windows\SYSTEM32\USER32.dll 
LoadedModule[16]=C:\Windows\SYSTEM32\MSVCR120.dll 
LoadedModule[17]=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\mspdb120.dll 
LoadedModule[18]=C:\Windows\SYSTEM32\VERSION.dll 
LoadedModule[19]=C:\Windows\SYSTEM32\IMM32.DLL 
LoadedModule[20]=C:\Windows\SYSTEM32\CRYPTSP.dll 
LoadedModule[21]=C:\Windows\system32\rsaenh.dll 
LoadedModule[22]=C:\Windows\SYSTEM32\bcrypt.dll 
LoadedModule[23]=C:\Windows\SYSTEM32\MSVCP120.dll 
LoadedModule[24]=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\mspdbcore.dll 
LoadedModule[25]=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\c2.dll 
LoadedModule[26]=C:\Windows\SYSTEM32\SHLWAPI.dll 
LoadedModule[27]=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\c1xx.dll 
LoadedModule[28]=C:\Windows\system32\apphelp.dll 
State[0].Key=Transport.DoneStage1 
State[0].Value=1 
FriendlyEventName=Stopped working 
ConsentKey=APPCRASH 
AppName=Microsoft (R) C//C++ Optimizing Compiler 
AppPath=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe 
ApplicationIdentity=00000000000000000000000000000000 

我真的很困惑,因为我与这个步骤,这个视觉工作室编译该项目多次。

编辑1: 我创造新的Win32Project和我把这个代码:

#include "stdafx.h" 

# define LENGTH 20 

typedef unsigned char  uint8_t; 
typedef uint8_t uint8; 

struct test 
{ 
    uint8 intT[LENGTH] = {}; 
}; 

,当我编译,我再次得到这个错误:

Error 1 error C1001: An internal error has occurred in the compiler. \Projects\Win32Project1\Win32Project1\Win32Project1.cpp 13 1 Win32Project1 
+0

'编译器是堆出来的space'听起来很有趣...什么是你的系统硬件规格? – fritzone

+0

我随时使用这个硬件 联想thinkpad e540 8GB ram 2gb vga cpu i5 64bit 4300m 我正在编译这个项目manyyy time on same stat!:| –

+0

当这个问题发生内存使用率是73%,我认为它不会导致问题 –

回答

3

根据定义,“内部编译器错误”(或ICE)是编译器错误。您的程序中可能存在触发该错误的代码。你崩溃似乎通过使用非静态数据成员初始化(NSDMI)来触发,并Microsoft admits that their support for NSDMIs in Visual Studio 2013 was unreliable at best

不幸的是,在我们的编译器(有些是写在30年前)处理上的代码初始化遭受许多长期的体系结构限制。这段代码对于C++ 03风格的初始化来说已经足够了,但是NSDMI(C++ 11的一个特性)却使它将这些限制当成了严重的错误。

鉴于此,您也可以尝试简单地升级您的工具链。 但是,也可能是您的安装完全损坏/损坏。

无论哪种方式,您的第一个任务是重新安装Visual Studio并查看问题是否仍然存在。也许尝试在另一台计算机上编译该项目。

如果这不能解决它,你需要生成一个minimal testcase并提交给开发人员审查(在MS连接)。请务必回到这里,并将我们链接到发布的问题,以便我可以用开发人员提供的任何相关信息(例如,该bug已修复的版本)更新答案。

+0

嗨,谢谢你的回答,我在Visual Studio 2015企业上编译我的项目,问题解决了,但visual studio 2013仍然存在问题。 –

1

这是一个ICE(an internal compiler error)。这是由WorldSocket.cpp文件的第256行代码造成的。

在该文件中;类AuthSession,here对错误消息中显示的数组(在行256)使用非静态默认成员初始化(NSDMI)。

IIRC,VS2013不完全支持NSDMI功能。 It was added to C++11但VS2013有limitations in its implementation of NSDMI

uint8 Digest[SHA_DIGEST_LENGTH] = {};可能只是太多,它编译。

+0

请注意,它是一个ICE,这是一个实现_bug_,虽然这行代码可能会触发该错误。 –

+0

@LightnessRacesinOrbit。多数民众赞成我认为我说 - 但不是正式的。你以为我在说什么? – Niall

+0

我想也许你是这样,但听起来有点像你说的代码本身是错误的,也许是通过打破实现定义的数组维度限制。虽然现在我已经考虑了一些,但你的回答很明确:P –

1

OK最后解决问题,只需要将Visual Studio 2013更新到Visual Studio 2013 Update 5

更新5对于Visual Studio 2013该错误已完全修复。

谢谢你“轻种族在轨道”和“尼尔”的答案,并帮助:)

我很高兴