DirectX-Probleme auf 3 Rechnern

cyrano1960

Grünschnabel
Hallo und guten Tag,

ich wollte mich in die Programmierung von Direct X mit C# einarbeiten und habe mir dazu Visual C# Express 2008 herunter geladen. Alle Tutorials schlugen leider fehl, weil ich immer den Fehler erhielt Direct X konnte nicht initialisiert werden. Da der Compiler und der Linker ohne Probleme durchliefen, tippte ich darauf, dass das Problem in der Direct X Installation lag und siehe da, dxdiag meldete auch einige veraltete Dateien sowie einige Dateien, die im Debug-Mode erstellt wurden *staun*. Eine Neuinstallation von Direct X brachte überhaupt nichts. Also probierte ich einfach die fertigen Beispielprogramme im bin-Verzreichnis des SDK und erhalte immer die selbe Fehlermeldung "xxx.exe hat ein Problem festgestellt und muss beendet werden". xxx.exe ist er Programmname, den ich aufgerufen haben. Also probierte ich die Beispiele auf einem anderen PC aus, dort meldet sich dxdiag ebenfalls mit der Version 9c und ohne Probleme. Trotzdem gibt es genau denselben Fehler. Also zum 3. Rechner, diesmal nicht Windows XP Home sondern Professional und wieder läuft es nicht. Ich weiß mir wirklich keinen Rat mehr. Also die fertig übersetzten Programm müssten doch laufen, sobald Direct X und das .net Framework (ich habe 3.5) installiert ist. Entweder ich seh den Wald vor Bäumen nicht mehr oder ich habe 3 defekte Installationen Hat jemand eine Idee, ich wäre sehr denkbar für jeden Denkanstoß. Viele Grüße und Dank im Voraus. Cyrano
 
Ich habe jetzt noch etwas anderes ausprobiert und die C++-Beispiele heruntergeladen. Die laufen alle ohne Probleme. An Direct X kann es also jedenfalls allein nicht liegen. Könnte der Fehler vielleicht im Bereich des .net-Framework zu finden sein? Aber auf allen 3 Rechnern ist das doch auch sehr unwahrscheinlich.
 
Hallo cyrano1960,

so wie ich das sehe, ist das Problem folgendes: Es gibt zwei Versionen von DirectX, das sog. Managed DirectX, das extra für das .NET Framework entwickelt wurde, und Unmanaged DirectX, das wohl in den C++-Projekten verwendet wird. Während letzteres lediglich ein installiertes DirectX voraussetzt, benötigst Du für die Managed-Version zusätzlich noch das Managed DirectX SDK. Das gibt es kostenlos auf der Microsoft-Homepage.

Vielleicht überprüfst Du mal Folgendes: Rufe mal dxdiag auf und gehe auf den Reiter "DirectX-Dateien". Es sollte eine Liste mit verschiedenen DLL's erscheinen. Suche dort nach den Einträgen, die mit "Microsoft.DirectX" beginnen. Sollten diese Einträge fehlen, ist das Managed DirectX SDK nicht installiert.

Ansonsten melde Dich noch einmal hier.

Gruß
PhoenixLoe
 
Hallo PhoenixLoe, vielen Dank für Deine schnelle Antwort. Auch wenn es noch leider nicht die Lösung ist, wird einem doch jedes Mal etwas klarer. Ich habe mir mit dxdiag mal die Dateien auf dem Rechner angeschaut, auf dem ich das Programm kompiliert habe. Dort sind alle Managed DirectX Dateien vorhanden. Wenn ich das Programm aber über "Projekt veröffentlichen" fertig stelle und es dann auf PC 2 intalliere, finde ich dort die Managed Direct X Dateien nicht. Sind diese Datein nur für die SDK notwendig?

Was mich verwirrt ist ja auch die Tatsache, das die fertig kompilierten Beispiele nicht laufen. Also wäre hier die Frage: Was benötige ich als Runtime für ein DirectX Programm das mit C# erstellt wurde? Durch die Kombination SDK, Framework, DirectX wird das Ganze am Anfang doch sehr unübersichtlich.

Vielleicht fällt Euch ja noch etwas weiteres ein, ich bin echt kurz vor der Verzweifelung.

Viele Grüße
cyrano
 
Auch, wenn es langsam ein Monolog wird, aber Ihr sollt ja wissen, wie es sich weiter entwickelt. Ich habe auf einem weiteren, fast jungfräulichen PC noch einmal alles installiert. DirectX, DirectX SDK für C#, Framework und C# (Visual C# 2008 Express Edition) und wollte nun als erstes die fertig kompilierten Beispiele aus dem bin-Ordner im Samples-Verzeichnis laufen lassen. Also mal mit dxdiag nachschauen, ob die Managed-DirectX-Dateien auch drin sind... waren sie aber nicht. Ich bin davon ausgegangen, dass sie bei der Installation des SDK rein kopiert werden. Dann habe ich das 1. Tutorial-Projekt geöffnet und den Punkt "Verweise hinzufügen" und siehe da, dort sind die Einträge. Also mal wieder eine Frage in die Runde: "Wo sind die Dateien, die ich über 'Verweise hinzufügen' sehe und wo sind die Dateien, die mir dxdiag anzeigt?"

Das Projekt ließ sich auch kompilieren und starten. Und als ich dxdiag nun wieder aufrief, wurden die Managed-DirectX-Dateien auch angezeigt. Beim Kompilieren der aufwädigereren Beispiele wie "dolphin" etc. erhalte ich allerdings namespace Fehler. Diese Programme lassen sich auch immer noch nicht einfach aufrufen und starten.

Noch als zusäztlichen Hinweis: DirectX-Programme, die ich mit C++ übersetze, laufen einwandfrei, also am DirectX allein oder der Hardware kann es nicht liegen.

In dem Zusammenhang hätte ich noch eine Frage: "Wie kann ich denn Assemblies manuell hinzufügen, d. h. wo finde ich sie und in welchen Ordner gehören sie, damit sie gefunden werden."

Viele Grüße
cyrano
 
Hallo cyrano1960,

alle Assemblies sind i.d.R. im Ordner "C:\Windows\assembly\gac" registriert. Dort sollten sich auch die Microsoft.DirectX-DLL's befinden. Zum Test gib mal Folgendes in die Windows-Konsole ein:

Code:
cd c:\windows\assembly\gac
dir
Es sollte eine Liste aller registrierten DLL's erscheinen.

Dass dxdiag die Dateien nicht auf Anhieb anzeigt, sondern erst mit Verzögerung, ist mir ein Rätsel. Eventuell wird diese Liste nur in bestimmten Abständen aktualisiert, da weiß ich aber nicht drüber Bescheid.
Dass die Standard-Beispiele funktionieren, beweist, dass die Installation der Kern-Komponenten einwandfrei verlaufen ist. Vielleicht postest Du hier mal einen der Fehler, der bei den anderen Projekten (z.B. "dolphin") auftreten.

Zudem wäre interessant, in welcher Reihenfolge Du die Komponenten installiert hast.
Außerdem wüsste ich gerne die SDK-Version, die Du installiert hast. Es kann nämlich sein, dass eine der berüchtigten verbugten Versionen ist.

Mal sehen, ob die Leute bei Chip.de eine andere Lösung haben (habe gerade zufällig Deinen Beitrag gefunden :rolleyes:).

Ich habe übrigens noch eine Seite gefunden, die die Installation von MDX beschreibt. Vielleicht überprüfst Du die Punkte, ob Sie mit Deiner Vorgehensweise übereinstimmen. Hier der Link: http://www.ondotnet.com/pub/a/dotnet/2003/06/02/dx9.html

Gruß
PhoenixLoe
 
Hallo PhoenixLoe,

ja ich kämpfe momentan an einigen Fronten... ;-) Den Link (ondotnet) habe ich auch heute Morgen nach meiner Mail noch gefunden und bei einigen Dingen dachte ich auch sofort: "Das ist es..." War es aber leider mal wieder nicht. Okay zu Deinen Fragen: Ich habe die DirectX SDK "August 2008", die hatte ich schon installiert, weil ich ja erst mit C++ anfangen wollte. Dann habe ich die Visual C# Express Edition 2008 installiert und dann (weil es nicht funktionierte) das C# DirectX SDK 9.0 (Version 9.00.0900). Danach nochmal Visual C# deinstalliert und wieder installiert. Kann es daran liegen, dass ich 2 SDKs auf dem Rechner habe? Ich werde mal eine wieder deinstallieren. Ich dachte, ich müßte beide installieren, weil das C# nur eine Erweiterung ist, aber es ist wohl nur eine Art Untermenge des SDK vom August 2008. Das probiere ich als nächstes aus.

2. Auf dem PC, wo das Ganze vom Prinzip her läuft aber die Kompilierung Probleme macht. Ich habe mal ein ganz einfaches Beispiel aus den Tutorials der sdk gewählt. Es geht eigentlich nur um die Erzeugung eines Device und das Definieren einiger Vertices. Dort ist ein Statement:

device.DeviceCreated := new System.EventHandler(this.OnCreateDevice);

Das Programm beschwert sich, weil das Ereignis "DeviceCreated" von device nicht bekannt sei. Ich kenn es auch nicht und in der Liste der verfügbaren Eigenschaften, Methoden und Ereignisse wird es auch nicht angezeigt.

So, ich werde mal weiter kämpfen ;-))
Bis denn
cyrano
 
Noch ein letzter Zwischenstand. Um ganz sicher zu sein, ob es an der Entwicklungsumgebung oder am Laufzeitsystem liegt, habe ich nun folgendes gemacht.

Auf dem "defekten" Rechner habe ich das Programm einfach nur erstellt ohne es zu starten. Im Verweisverzeichnis habe ich von den Managed-DirectX-Dateien lokale Kopien erzeugt. Also müßten ja alle notwendigen Dateien im publish-Prozess eingebunden werden. Das deployment ist bei Visual C# Express Edition übrigens wirklich grandios. Ich habe die Dateien auf einen USB-Stick kopiert und auf einem Rechner, der von all dem noch nie was gehört hat installiert. Das Programm läuft einwandfrei, d. h. es liegt definitiv an dem Laufzeitsystem des Entwicklungsrechners. Also werde ich wohl eins von den DirectX-Uninstaller-Programmen herunterladen und versuchen, den Rechner erstmal einigermaßen DirectX-frei zu bekommen. Oder ich kopiere die Dateien zu Fuß. Ich halte Euch auf jeden Fall auf dem Laufenden und hoffe, dass es dem einen oder anderen etwas nutzt. VG Cyrano
 
Endlich, ich hab die Lösung. Da sieht man mal wieder, dass man einen Fehler nach dem anderen beheben sollte und nicht alles gleichzeitig. Als der erste Fehler auftrat, habe ich sofort die 2. SDK nachinstalliert, die dann einen weiteren Fehler ausgelöst hat. Als ich den 1. nun korrigiert habe, ging es trotzdem nicht mehr wohl wegen der beiden installierten SDK. Und dadurch, dass die Beispiele der C++-Umgebung liefen, bin ich vollkommen auf den falschen Weg geraten. Diese verwenden aber alle beim Erzeugen des Devices als Device-Type "Reference". Die Beispiele aus der C#-Umgebung sind aber alle vom DeviceType "Hardware". Ausgerechnet auf meinem älteren Laptop, der hardwaremäßig DirectX9 wohl nicht unterstützt, habe ich das Ganze installiert und den Fehler nicht bemerkt, weil ein Teil der Beispiele ja lief. Jetzt habe ich den DeviceType geändert und es läuft alles.

Mich würde von Euch noch interessieren, ob die ganze Schreiberei hier für jemanden nützlich war. Sonst doktor ich nämlich immer nur für mich herum.

VG Cyrano
 
Hallo Cyrano,

natürlich war die Schreiberei nützlich! :) Ich hatte schon des Öfteren dieselben Probleme mit dem Managed DirectX SDK und habe jetzt mehr Optionen, woran es liegen kann. Und den ganzen Hilfegesuchen in anderen Foren zu diesem Thema kann ich entnehmen, dass die Lösung einigen Leuten helfen wird :rolleyes: Ich habe nämlich vor diesem Thread noch keine vernünftige Beschreibung für eine einwandfreie Installation von MDX auf verschiedenen Rechnern gefunden.

In diesem Sinne ;)

Gruß
PhoenixLoe
 

Neue Beiträge

Zurück