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

21.07.2010, 13:05

3d-Spiele-Programmierung Auflage 2006 Beispileprogramm 2 Fenster

Hallo,

ich bin noch neu im Bereich der Spieleprogrammierung und versuche gerade das Beispielprogramm 2 - Erstes Fenster selbst zu erstellen.
Ich verwende Visual Studio 2008. Ich habe zuerst ein leeres Win32 Projekt erstellt. Danach habe ich die resource.h, die InitWindow.h, die InitWindow.cpp und die Fenster.rc Dateien zum Projekt hinzugefügt. Ich habe die erforderlichen .lib dateien direkt aus dem Beispielprogramm von der cd kopiert, so dass da nichts falsch sein dürfte. Zum Schluss habe ich noch die Icon.ico und die Fenster.rc Datei von der CD und den ganzen Ordner Allgemeines in mein Projektordner kopiert.

Der Compiler liefert mir folgende Fehler, wenn ich das Projekt erstellen möchte:

1>InitWindow.cpp
1>c:\users\jens\documents\visual studio 2008\projects\allgemeines\initwindow.cpp(23) : error C2440: 'Initialisierung': 'const char [16]' kann nicht in 'LPCWSTR' konvertiert werden
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\users\jens\documents\visual studio 2008\projects\allgemeines\initwindow.cpp(50) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [16]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\users\jens\documents\visual studio 2008\projects\allgemeines\initwindow.cpp(67) : error C2664: 'UnregisterClassW': Konvertierung des Parameters 1 von 'const char [16]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>Das Buildprotokoll wurde unter "file://c:\Users\Jens\Documents\Visual Studio 2008\Projects\Fenster\Fenster\Debug\BuildLog.htm" gespeichert.
1>Fenster - 3 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Ich habe zum Vergleich das Beispiel programm von der CD gestartet und dieses erstellt. Dort funktioniert es problemlos, jedoch nicht das Debuggen. Es fehlt die d3dx9d_30.dll.
Warum funktioniert es im Beispielprogramm und nicht in meinem selbst erstellten Projekt? Habe ich etwas wichtiges vergessen?

Ich bin dankbar für jede Hilfe

2

21.07.2010, 13:10

Willkommen im Forum Jens! ;)

Vermutlich liegen die Probleme am Zeichensatz.
In den Projekteinstellungen sollte Multi-Byte oder "Nicht angegeben" stehen.
fka tm

3

21.07.2010, 13:32

Hallo TrikkieMikkie, danke für die nette Begrüßung und die schnelle Antwort.
Kannst du mir sagen wo genau die Einstellung vorzunehmen ist?

4

21.07.2010, 13:47

Projekteigenschaften (Alt + F7) - Konfigurationseigenschaften -> Zeichensatz ;)
fka tm

5

21.07.2010, 13:50

Habs jetzt doch noch gefunden und die Kompilierung funktioniert einwandfrei.

Wenn ich jetzt versuche das Programm zu starten, kommt eine Fehlermeldung. Die d3dx9d_30.dll kann nicht gefunden werden. Diese dll habe ich aber nirgendswo gefunden.

6

21.07.2010, 14:35

Dann hast du 2 Möglichkeiten:

1. Du kompilierst die Tribase Engine neu. Nicht einfach, aber in den FAQ gibts einen Artikel dazu.
2. Du kompilierst als Release. Einfacher. Hier die Projekteigenschaften analog zu Debug anpassen.
fka tm

7

21.07.2010, 16:11

Ich hab versucht die Engine neu zu kompilieren und zwar nach dieser Anleitung:

Lösung: TriBase und Visual C++ 2005/2008 Express

War das die richtige Anleitung? Beim Erstellen der Tribase Engine als Debug Version bekam ich einen Fehler. Ich hab daraufhin die Ausgabedatei manuell in TribaseD.dll geändert. Die Dateien wurden dann erstellt.
Ich habe dann mein Projekt neu erstellt und wollte es wieder ausführen, aber die d3dx9d_30.dll wird immer noch verlangt. Habe ich etwas falsch gemacht oder war es doch die falsche Anleitung. Ich hab nämlich VS 2008 und die Anleitung bezog sich auf die 2005er Version.

8

21.07.2010, 16:24

Der Artikel war schon der Richtige. (steht ja auch im Titel ;))

Welche Fehlermeldung hast du den bekommen?

Prüf auch mal, ob alles am richtigen Platz ist.
Z.B. greifst du auf alte oder neue Libs/DLLs zu?
fka tm

9

21.07.2010, 17:07

Beim Erstellen der Debug Version, ohne dass ich an der Ausgabedatei beim Linker das "D" angehängt habe, kommt dieser Fehler:

1>Postbuildereignis wird ausgeführt...
1> 1 Datei(en) kopiert.
1>Zugriff verweigert
1> 0 Datei(en) kopiert.
1>Das System kann die angegebene Datei nicht finden.
1>Project : error PRJ0019: Ein Tool hat einen Fehlercode aus folgender Quelle zurückgegeben: "Postbuildereignis wird ausgeführt..."
1>Das Buildprotokoll wurde unter "file://d:\3D-Spiele-Programmierung\TriBase\Debug\BuildLog.htm" gespeichert.

Ich hatte im bin Verzeichnis zu Beginn alle dll-Dateien gelöscht und im lib-Verzeichnis alle lib-Dateien, ausser die "StrmIIDs.lib, gelöscht. Dann bin ich die Anleitung durchgegangen.
Folgende lib-Dateien hab ich gelinkt:

d3d9.lib
d3dx9d.lib
dinput8.lib
dsound.lib
strmiids.lib
strmbased.lib --> die war gelöscht, der Rest nicht
dxerr.lib
dxguid.lib
winmm.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comctl32.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib

Da ich die nicht gelöscht habe, müssten die alt sein.

10

21.07.2010, 18:21

Mit der Release Version klappt es. die dll wird da anscheinend nicht gefordert.

Ich hab noch eine Frage, bezügich der Platform sdk. Ich hab Windows server 2008 platform sdk.net framework installiert. Das ist doch eine richtige Version des platform sdk oder?
Ich habe als Verzeichnis im Windows Ordner nicht Platform sdk stehen sondern nur Microsoft sdk. Kann das auch etwas mit der fehlenden dll zu tun haben?

Werbeanzeige