[VS 2010] error D8030: INTERNER COMPILERFEHLER

vfl_freak

Premium-User
Guten morgen,

seit gestern kämpfe ich mit diesem Compilerfehler ....

Ich habe in insgesamt 5 verschiedenen Projekten eine neue Klasse eingefügt. Vier davon lassen sich problemlos compilieren, das fünfte nur als DEBUG-Version; beim RELEASE kommt der Fehler (auch wenn ich die neue Klasse alleine compliere) !
1>cl : Befehlszeile error D8030: INTERNER COMPILERFEHLER in ""
1> Klicken Sie im Menü "Hilfe" von Visual C++ auf "Technischer Support",
1> oder öffnen Sie die Hilfe zum technischen Support, um weitere Informationen zu erhalten.

der Header:
C++:
// CSCmdMaps.h: Schnittstelle für die Klasse CCSCmdMaps
//
//////////////////////////////////////////////////////////////////////

#pragma once

#include <map>
#include <string>

using namespace std;

class CCSCmdMaps
{
public:
	CCSCmdMaps(void);
	virtual ~CCSCmdMaps(void);

	map<int,string> fFillStatusMap();
	map<int,string> fFillLoginMap();
	map<int,string> fFillSDataMap();
	map<int,string> fFillFaxCmdsMap();
	map<int,string> fFillCRMCmdsMap();
	map<int,string> fFillRemoteControlMap();

};

die cpp-Datei (leicht anonymisiert)
C++:
// CSCmdMaps.cpp: Implementierung der Klasse CCSCmdMaps
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CSCmdMaps.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////
CCSCmdMaps::CCSCmdMaps(void)
{}

CCSCmdMaps::~CCSCmdMaps(void)
{}


// ##########################################################################################################
// ##########   Füllen der Map für die CommandGroup Statusinformationen: ID_REQ_CG_STATUS (0x002)  ##########
// ##########################################################################################################
map<int,string> CCSCmdMaps::fFillStatusMap()
{
	map<int,string> mapStatus;

	mapStatus[0x01] = "AAA";
	// ...
	mapStatus[0x0E] = "ZZZ";

	return mapStatus;

} // fFillStatusMap


// ###########################################################################################
// ##########   Füllen der Map für die CommandGroup Login: ID_REQ_CG_LOGIN (0x003)  ##########
// ###########################################################################################
map<int,string> CCSCmdMaps::fFillLoginMap()
{
	map<int,string> mapLogin;

	mapLogin[0x01] = "AAA";
  // ...
	mapLogin[0x015] = "ZZZ";

	return mapLogin;

} // fFillLoginMap


// ###########################################################################################
// ##########   Füllen der Map für die CommandGroup Login: ID_REQ_CG_SDATA (0x005)  ##########
// ###########################################################################################
map<int,string> CCSCmdMaps::fFillSDataMap()
{
	map<int,string> mapSData;

	mapSData[0x090] = "AAA";
	mapSData[0x091] = "ZZZ";

	return mapSData;

} // fFillSDataMap


// #############################################################################################
// ##########   Füllen der Map für die CommandGroup Login: ID_CG_FAXCOMMANDS (0x00A)  ##########
// #############################################################################################
map<int,string> CCSCmdMaps::fFillFaxCmdsMap()
{
	map<int,string> mapFaxCmds;

	mapFaxCmds[0x01] = "AAA";
  // ...
  mapFaxCmds[0x0C] = "ZZZ";

	return mapFaxCmds;

} // fFillFaxCmdsMap


// #############################################################################################
// ##########   Füllen der Map für die CommandGroup Login: ID_CG_CRMCOMMANDS (0x00B)  ##########
// #############################################################################################
map<int,string> CCSCmdMaps::fFillCRMCmdsMap()
{
	map<int,string> mapCRMCmds;

	mapCRMCmds[0x001] = "AAA";
  // ...
  mapCRMCmds[0x25c] = "ZZZ";

	return mapCRMCmds;

} // fFillCRMCmdsMap


// #######################################################################################################
// ##########   Füllen der Map für die CommandGroup Login: ID_CG_REMOTECONTROLLCOMMANDS (0x0c)  ##########
// #######################################################################################################
map<int,string> CCSCmdMaps::fFillRemoteControlMap()
{
	map<int,string> mapRemoteControl;

	mapRemoteControl[0x001] = "AAA";
  // ...
  mapRemoteControl[0x010] = "ZZZ";

	return mapRemoteControl;

} // fFillRemoteControlMap

Das Einzige, was mich leicht irritiert, ist dieser Teil:
C++:
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
Normalerweise werden ja hierbei im Release-Mode die drei inneren Zeilen hellgrau dargestellt, das da define nicht aktiv ist (ist es lt. Projekteinstellungen auch nicht) - was jedoch im fehlerhaften Projekt NICHT der Fall ist.

Ich bin über Google auf diese Seite (http://support.microsoft.com/kb/2546748/en-us) gestoßen, finde allerdings die erwähnte Einstellung /MP in meinen Projekteinstellungen nicht ... :-(

Ich hoffe, dass irgend jemand hierzu eine zündende Idee hat!

Danke und Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

so, ich habe noch ein wenig weiter geforscht.

Der Compilerschalter /MP habe ich gefunden - er stand eindeutig auf NEIN (kann als nicht das im o. g. Link erwähnte Problem sein) ....

Ich habe dann mal die neu Klasse mit allen Aufrufen komplett entfernt - und konnte die Releaseversion wieder erstellen.
Das Problem tritt aber auch dann auf, sobald ich jetzt irgendeine 'leere' neue Klasse hinzufüge (also nur mit Konstruktor und Destruktor) - und eben nur in der Releaseversion .....

Gruß
Klaus
 
Ich kann dir gerade nicht sagen, ob es wirklich _DEBUG oder nur DEBUG ist. Ansonsten probiere mal #ifndef NDEBUG (den gibt es auf jedenfall^^)

Ansonsten mal alle Funktionen rauswerfen, kompilieren. Nach und nach wieder die Funktionen mit aufnehmen. Irgendwann kannst du vielleicht eingrenzen, wo der Fehler liegt.
 
Moin,

erstmal Danke für Deine Antwort :)

Ok, NDEBUG wäre sicherlich eine Möglichkeit ... werde ich am Montag mal testen !
Allerdings ist bei mir in den DEBUG-Versionen eindeutig "_DEBUG" gesetzt!

Aber wie ich in meinem zweiten Post schon schrieb, habe ich diese neue Klasse mit allen Aufrufen komplett aus dem Projekt rausgeworfen und konnte dann die Releaseversion wieder erzeugen.

Das Problem tritt aber jetzt immer wieder auf, sobald ich jetzt auch nur irgendeine beliebige neue Klasse nur mit Konstruktor und Destruktor hinzufüge - und eben nur in der Releaseversion .....

Bin derzeit absolut ratlos :confused:

Gruß
Klaus
 
Hallo,

hast du das Projekt nach dem Hinzufügen der Klasse auch mal komplett bereinigt und neu erstellt? Verwendest du vorkompilierte Header? Falls ja, schalte die Funktion testweise mal ab.

Grüße,
Matthias
 
Moin Matthias,

bereinigt und neu erstellt - ja!

Ok, das mit den vorcompilierten Headern werde ich am Montag morgen mal prüfen und ggf. testen! Danke für den Hinweis :)

Gruß
Klaus
 
Guten Morgen .....

tja, die vorkompilierten Header sind bei mir schon ausgeschaltet gewesen ....

Ich poste jetzt hier mal die kompletten Befehlszeilen, so wie sie bei mir in den Eigenschaften stehen:
C++:
// ###
// C++
// ###
/I"D:\Eigene Dateien\Visual Studio 2010\Projects\Crypto561" /Zi /nologo /W3 /WX- /O2 /Ob1 /Oy- 
/D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_VC80_UPGRADE=0x0600" /D "_MBCS" /GF /Gm- /EHsc /MT 
/GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fp".\MYAPP_Release\MYAPP.pch" 
/Fa".\MYAPP_Win32_Release\" /Fo".\MYAPP_Win32_Release\" 
/Fd".\MYAPP_Win32_Release\" /Gd /analyze- /errorReport:none

// ######
// Linker
// ######
/OUT:".\MYAPP_Win32_Release\#MYAPP.exe" /INCREMENTAL:NO /NOLOGO 
/LIBPATH:"D:\Eigene Dateien\Visual Studio 2010\Projects\Crypto561\Win32\Output\Release" 
"ws2_32.lib" "cryptlib.lib" "nafxcw.lib" "libcmt.lib" /NODEFAULTLIB:"Libc.lib" 
/NODEFAULTLIB:"libcmt.lib" /NODEFAULTLIB:"msvcrt.lib" /NODEFAULTLIB:"libcd.lib" 
/NODEFAULTLIB:"msvcrtd.lib" /MANIFEST 
/ManifestFile:".\MYAPP_Win32_Release\#MYAPP.exe.intermediate.manifest" 
/ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" 
/PDB:"D:\Eigene Dateien\Visual Studio 2010\Projects\MYAPP\MYAPP_Win32_Release\#MYAPP.pdb" 
/SUBSYSTEM:WINDOWS /PGD:"D:\Eigene Dateien\Visual Studio 2010\Projects\MYAPP\MYAPP_Win32_Release\#MYAPP.pgd" 
/TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:NONE

// ############
// Manifesttool
// ############
/nologo /verbose ".\MYAPP_Win32_Release\#MYAPP.exe.embed.manifest.res" 

// ##########
// Ressourcen
// ##########
/D "_VC80_UPGRADE=0x0600" /l 0x0407 /nologo /fo".\MYAPP_Win32_Release\%(Filename).res"

// ######################
// XML-Dokument-Generator
// ######################
/nologo /Fo".\MYAPP_Win32_Release\#MYAPP.xml"

// #######################
// Information durchsuchen
// #######################
/nologo /o".\MYAPP_Win32_Release\MYAPP.bsc" 

// ----------------------------------------------------------------------------
// MYAPP dient hier der Anonymisierung
// die '#' vor dem Dateinamen ist so gewollt    
// ----------------------------------------------------------------------------

Ich hoffe auf weitere Ideen .....

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
OK, sieht soweit gut aus.

Folge mal diesen Anweisungen:
go to "Tools" menu, and then "Options...". Next, expand the "Projects and Solutions" tree and select "Build and Run". On the page that comes up on the right, please select "Diagnostic" under the second to last option, "MSBuild project build output verbosity". Then click Ok to the dialog, and build the project using the "Rebuild Solution" from the "Build" menu. Once the project has completed building, please copy all output from the Output window (you can open the output window by going to the "View" menu, and select the "Output" view) and paste into a text document
Und häng die .txt dann hier an.

Gruß
 
Zurück