Bislang habe ich es über die Verknüpfung gestartet, im Moment starte ich über den Pfeil.
Bislang habe ich es über die Verknüpfung gestartet, im Moment starte ich über den Pfeil.
Über den Pfeil dauert es besonders lange.
Ich bekomme folgenden Aufrufstack:
> CvGameCoreDLL.dll!CProfileScope::~CProfileScope() Zeile 59 C++
CvGameCoreDLL.dll!CvXMLLoadUtility::CreateFXml() Zeile 47 + 0x16 Bytes C++
CvGameCoreDLL.dll!CvXMLLoadUtility::LoadPlayerOptions() Zeile 2579 + 0x8 Bytes C++
Civ4BeyondSword.exe!00409246()
[Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für Civ4BeyondSword.exe]
msvcr71.dll!7c34218a()
ntdll.dll!77bb9f45()
Civ4BeyondSword.exe!00790074()
Civ4BeyondSword.exe!00790074()
Civ4BeyondSword.exe!0078006f()
Civ4BeyondSword.exe!0078006f()
Civ4BeyondSword.exe!0078006f()
Civ4BeyondSword.exe!0078006f()
Civ4BeyondSword.exe!0064006e()
Civ4BeyondSword.exe!0064006e()
Civ4BeyondSword.exe!0069006c()
Civ4BeyondSword.exe!0064006e()
Civ4BeyondSword.exe!0064005f()
Civ4BeyondSword.exe!0064005f()
Civ4BeyondSword.exe!0075006c()
Civ4BeyondSword.exe!0075006c()
Civ4BeyondSword.exe!0075006c()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0073005f()
Civ4BeyondSword.exe!0073005f()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064002e()
Civ4BeyondSword.exe!0064006e()
Civ4BeyondSword.exe!0064006e()
Civ4BeyondSword.exe!0064006e()
Civ4BeyondSword.exe!0064006e()Code:class CProfileScope { public: CProfileScope() { bValid= false;}; CProfileScope(ProfileSample *pSample) { m_pSample = pSample; bValid = true; gDLL->BeginSample(m_pSample); }; ~CProfileScope() { if(bValid ) { gDLL->EndSample(m_pSample); bValid = false; } }; private: bool bValid; ProfileSample *m_pSample; };Code:bool CvXMLLoadUtility::CreateFXml() { PROFILE("CreateFXML"); try { m_pFXml = gDLL->getXMLIFace()->CreateFXml(m_pSchemaCache); } catch(...) { char szMessage[512]; sprintf( szMessage, "Caught unhandled exception creating XML parser object \n Current XML file is: %s", GC.getCurrentXMLFile().GetCString()); gDLL->MessageBox( szMessage, "Loading Error" ); return false; } return true; }Sagt das irgend etwas aus?Code:DllExport bool CvXMLLoadUtility::LoadPlayerOptions() { if (!CreateFXml()) return false; LoadGlobalClassInfo(GC.getPlayerOptionInfo(), "CIV4PlayerOptionInfos", "GameInfo", "Civ4PlayerOptionInfos/PlayerOptionInfos/PlayerOptionInfo", false); FAssert(GC.getNumPlayerOptionInfos() == NUM_PLAYEROPTION_TYPES); DestroyFXml(); return true; }
Das Problem sieht nicht umbedingt so aus, als wäre es im obigen Zusammehang.
Was für ein Fehler ist es überhaupt? Dazu hast du nichts geschrieben. Wenn keine Fehlermeldung vorliegt, weiß ich doch nicht , was dein Problem ist.
Das Problem ist, dass nichts passiert. Das Spiel beendet das Laden einfach. Der Fehler muss aus dem neuen Code stammen oder mit ihm zusammenhängen, denn vorher lief das Spiel einfandfrei. Die Fehlermeldung an sich hat das Computer leider viel zu schnell weggeklickt (er hat eine Eingabe für ein anderes Programm als Wegklicken interpretiert), so dass ich sie nicht angeben kann. Ich hatte gehofft, dass der Stack irgendwie weiterführt bei der Suche.
Wenn ich "Weiter" auswähle, kommt dieser Fehler:
Es wird dann wieder der selbe Stack aufgezeigt. Daher denke ich, dass das auch eben die Fehlermeldung war.Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
Wenn ich weiter auf "Weiter" klicke, kommen Fehler zur Anzahl der Spieloptionen. Die habe ich aber gar nicht verändert. Können aber auch Folgefehler zum ersten Fehler sein.
Kannst du mir mal deinen Code schicken? Testen werde ich es wohl mangels anderer Dateien wohl nicht können.
Danach kommt:
Stack:Unbehandelte Ausnahme bei 0x616e5c09 in Civ4BeyondSword.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x616e5c09.
616e5c09()
> CvGameCoreDLL.dll!CvXMLLoadUtility::LoadCivXml(FXml * pFXml=0x00277018, const char * szFilename=0xcccccccc) Zeile 366 + 0x55 Bytes C++
0018ec08()Code:bool CvXMLLoadUtility::LoadCivXml(FXml* pFXml, const TCHAR* szFilename) { char szLog[256]; sprintf(szLog, "LoadCivXml (%s)", szFilename); PROFILE(szLog); OutputDebugString(szLog); OutputDebugString("\n"); CvString szPath = szFilename; CvString fsFilename = szFilename; if (!gDLL->fileManagerEnabled()) { szPath = "Assets//" + szPath; } logMsg("Loading XML file %s\n", szPath.c_str()); if (!gDLL->getXMLIFace()->LoadXml(pFXml, szPath)) { logMsg("Load XML file %s FAILED\n", szPath.c_str()); return false; } logMsg("Load XML file %s SUCCEEDED\n", szPath.c_str()); GC.setCurrentXMLFile(szFilename); return true; // success }
Folgefehler, daraus kann man nicht wirklich was schließen.
Hier sind alle Daten, xml (betroffen von den Änderungen sind in erster Linie das GameInfoSchema und die EraInfo.xml) und Python habe ich gleich hinzugefügt.
Geändert von Kathy (06. Juni 2014 um 21:14 Uhr)
Es wäre gut, wenn du eine gewisse Homogenität hättest.
//Kathy Beginn Mercenary Era
//Kathy Mercenary Era Beginn
Macht es leichter, alles abzusuchen.
Ich konnte das gleiche Problem feststellen, aber:
Findet man unter Systemsteuerung -> Verwaltung -> Ereignisanzeige -> Windows-Protokolle -> Anwendung.Code:Name der fehlerhaften Anwendung: Civ4BeyondSword.exe, Version: 3.1.9.0, Zeitstempel: 0x4a0c27e6 Name des fehlerhaften Moduls: KERNELBASE.dll, Version: 6.1.7601.18409, Zeitstempel: 0x53159a86 Ausnahmecode: 0x80000003 Fehleroffset: 0x00013226 ID des fehlerhaften Prozesses: 0x184c Startzeit der fehlerhaften Anwendung: 0x01cf7b57ddaedc39 Pfad der fehlerhaften Anwendung: C:\Spiele\Sid Meier's Civilization 4 Complete\Beyond the Sword\Civ4BeyondSword.exe Pfad des fehlerhaften Moduls: C:\Windows\syswow64\KERNELBASE.dll Berichtskennung: 4712bf08-e74b-11e3-a2ff-ac220bcd396f
An der roten Stelle habe ich einen Haltepunkt platziert und dieser wird nicht erreicht. Das Problem hat nichts mit deiner obigen Codeänderungen direkt zu tun.Code:bool CvXMLLoadUtility::LoadPreMenuGlobals() { if (!CreateFXml()) { return false; } LoadGlobalClassInfo(GC.getGameSpeedInfo(), "CIV4GameSpeedInfo", "GameInfo", "Civ4GameSpeedInfo/GameSpeedInfos/GameSpeedInfo", false); LoadGlobalClassInfo(GC.getTurnTimerInfo(), "CIV4TurnTimerInfo", "GameInfo", "Civ4TurnTimerInfo/TurnTimerInfos/TurnTimerInfo", false); LoadGlobalClassInfo(GC.getWorldInfo(), "CIV4WorldInfo", "GameInfo", "Civ4WorldInfo/WorldInfos/WorldInfo", false); LoadGlobalClassInfo(GC.getClimateInfo(), "CIV4ClimateInfo", "GameInfo", "Civ4ClimateInfo/ClimateInfos/ClimateInfo", false); LoadGlobalClassInfo(GC.getSeaLevelInfo(), "CIV4SeaLevelInfo", "GameInfo", "Civ4SeaLevelInfo/SeaLevelInfos/SeaLevelInfo", false); LoadGlobalClassInfo(GC.getAdvisorInfo(), "CIV4AdvisorInfos", "Interface", "Civ4AdvisorInfos/AdvisorInfos/AdvisorInfo", false); LoadGlobalClassInfo(GC.getTerrainInfo(), "CIV4TerrainInfos", "Terrain", "Civ4TerrainInfos/TerrainInfos/TerrainInfo", false); LoadGlobalClassInfo(GC.getEraInfo(), "CIV4EraInfos", "GameInfo", "Civ4EraInfos/EraInfos/EraInfo", false); LoadGlobalClassInfo(GC.getUnitClassInfo(), "CIV4UnitClassInfos", "Units", "Civ4UnitClassInfos/UnitClassInfos/UnitClassInfo", false);
Dieser Haltepunkt hätte sonst erreicht werden müssen.
Debuggausgabe:
Code:DLL Load:Mods\Kathys Werkstatt-Mod\Assets\CvGameCoreDLL.dll "Civ4BeyondSword.exe": "C:\Spiele\Sid Meier's Civilization 4 Complete\Beyond the Sword\Mods\Kathys Werkstatt-Mod\Assets\CvGameCoreDLL.dll" geladen, Symbole wurden geladen. DLL_PROCESS_ATTACH "Civ4BeyondSword.exe": "C:\Windows\SysWOW64\msxml3.dll" geladen, Cannot find or open the PDB file Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. LoadCivXml (xml\GameInfo/CIV4PlayerOptionInfos.xml) Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. Eine Ausnahme (erste Chance) bei 0x616e5c09 in Civ4BeyondSword.exe: 0xC0000005: Access violation. Unbehandelte Ausnahme bei 0x616e5c09 in Civ4BeyondSword.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x616e5c09.
edit: Kathy: Hast du funktionierenden Code gesichert, der nicht so alt ist?
Alle: Kann es an was anderen liegen? XML oder Python?
Geändert von rucivfan (29. Mai 2014 um 18:52 Uhr)
Die obige Fehlermeldung bedeutet wohl, dass der Stack kaputt ist. Irgend eine XML-Datei kann dafür verantwortlich sein.Code:Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
Geändert von rucivfan (29. Mai 2014 um 19:34 Uhr)