Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.06.2006, 18:12

Assembly aus Assembly lädt zu spät

Hi,
ich habe folgendes Problem:

In einer kleinen DX-2DEngine werden (logischerweise) die DirectX-Assemblies geladen. Normalerweise funktioniert das auch einwandfrei (Assemblies werden geladen, Code wird ausgeführt). Aber manchmal werden die Assemblies zu spät geladen (Code wird ausgeführt, Assemblies werden geladen) mit dem Resultat, dass das Programm abstürzt -> Der Code wird einfach nicht mehr weiter ausgeführt.

Ich gebe die DX-Assemblies in der IDE (VC# 2005 Express) als Referenzen an, also nicht dynamisch.

Ich hab einfach mal den Programmverlauf in der Konsole mitgeloggt.

So läuft das Programm richtig:

Zitat

'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'D:\Projekte\C#\Engine\ArcanumEngine\ArcanumEngineDemo\bin\Debug\ArcanumEng
ineDemo.exe', Symbols loaded.

'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'D:\Projekte\C#\Engine\ArcanumEngine\ArcanumEngineDemo\bin\Debug\ArcanumEng
ine.dll', Symbols loaded.

Starte Engineinitialisierung
Erstelle Fenster...
...Fertig
Erstelle Device...
...Fertig
Initialisiere Device...
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.DirectInput\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.DirectInput.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.Direct3D\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.Direct3D.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll', No symbols loaded.
...Fertig
Engineinitialisierung Beendet
Erstelle Maus und Tastaturdevice...
...Fertig
Demo.Init()
Füge Gamescreen hinzu...
Hole Device...
...Fertig
Lade...
Hole Bildschirmgröße...
Erstelle Szene
Erstelle Item
Initialisiere Itemerstellung
Itemerstellung
Gameobjectconstruktor
Erstelle Sprite
Suche Textur: img\Paddelrechts.png
Textur nicht gefunden.
CreateTexture(img\Paddelrechts.png)
Lade Textur
Gebe geladene Textur zurück
[...Ladezeug...]
Erstelle GUI
Lade GUI Texte
Fertig
...Fertig
...Fertig
Zeige das Fenster...
...Fertig
Starte Programm...
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.Direct3DX\1.0.2911.0__31bf3856ad364e35\Microsoft.DirectX.Direct3DX.dll', No symbols loaded.
The thread '<No Name>' (0xacool has exited with code 0 (0x0).
The thread 0x1a8 has exited with code 0 (0x0).
...Fertig
The thread '<No Name>' (0xbacool has exited with code 0 (0x0).
The thread 0x77c has exited with code 0 (0x0).
The program '[3484] ArcanumEngineDemo.vshost.exe: Managed' has exited with code 0 (0x0).


So stürzt das Programm ab:

Zitat

'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'D:\Projekte\C#\Engine\ArcanumEngine\ArcanumEngineDemo\bin\Debug\ArcanumEng
ineDemo.exe', Symbols loaded.

'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'D:\Projekte\C#\Engine\ArcanumEngine\ArcanumEngineDemo\bin\Debug\ArcanumEng
ine.dll', Symbols loaded.

Starte Engineinitialisierung
Erstelle Fenster...
...Fertig
Erstelle Device...
...Fertig
Initialisiere Device...
...Fertig
Engineinitialisierung Beendet
Erstelle Maus und Tastaturdevice...
...Fertig
Demo.Init()
Füge Gamescreen hinzu...
Hole Device...
...Fertig
Lade...
Hole Bildschirmgröße...
Erstelle Szene
Erstelle Item
Initialisiere Itemerstellung
Itemerstellung
Gameobjectconstruktor
Erstelle Sprite
Suche Textur: img\Paddelrechts.png
Textur nicht gefunden.
CreateTexture(img\Paddelrechts.png)
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.DirectInput\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.DirectInput.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.Direct3D\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.Direct3D.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll', No symbols loaded.
The program '[2584] ArcanumEngineDemo.vshost.exe: Managed' has exited with code 0 (0x0).


Wie man dort sieht werden beim ersten mal die notwendigen Assemblies schon bei der Deviceerstellung geladen, beim zweiten mal aber erst, wenn es ums Texturladen geht.

mfg
Bobba

2

25.06.2006, 19:11

Hatte gerade ein Gegenbeispiel.
Daran scheint es also nicht zu liegen. Das Problem jetzt ist nur, dass das Programm manchmal an einer bestimmten Stelle aufhört sich auszuführen. ein C'tor wird aufgerufen, aber das Programm kommt nie im C'tor an. *ratlos sei*