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.02.2009, 14:27

Probleme mit erster Übungsaufgabe

Guten Tag,

bin nun bei den ersten Übungsaufgaben angekommen (Seite 37).

Schon Aufgabe 1 überfordet mich bzw. mein Visual C++ 2005.

Habe soweit alles in Projektverzeichnisse usw. eingetragen, doch bekomme ich bei diesem Programm :

C-/C++-Quelltext

1
2
3
4
5
#include "TriBase.h"

tbInit();

tbExit();


Bereits diese starke Fehlermeldung :

[list]1>c:\programme\tribase\include\dshowbaseclasses\wxutil.h(195) : warning C4312: 'Typumwandlung': Konvertierung von 'LONG' in größeren Typ 'PVOID'
1>c:\programme\tribase\include\tbgui.h(288) : warning C4267: '=': Konvertierung von 'size_t' nach 'int', Datenverlust möglich
1>c:\dokumente und einstellungen\******\eigene dateien\visual studio 2005\projects\übung\übung\main.cpp(3) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\******\eigene dateien\visual studio 2005\projects\übung\übung\main.cpp(3) : error C2556: 'int tbInit(void)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'tbResult tbInit(void)'
1> c:\programme\tribase\include\tribase.h(108): Siehe Deklaration von 'tbInit'
1>c:\dokumente und einstellungen\******\eigene dateien\visual studio 2005\projects\übung\übung\main.cpp(3) : error C2371: 'tbInit': Neudefinition; unterschiedliche Basistypen
1> c:\programme\tribase\include\tribase.h(108): Siehe Deklaration von 'tbInit'
1>c:\dokumente und einstellungen\******\eigene dateien\visual studio 2005\projects\übung\übung\main.cpp(5) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\dokumente und einstellungen\******\eigene dateien\visual studio 2005\projects\übung\übung\main.cpp(5) : error C2556: 'int tbExit(void)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'tbResult tbExit(void)'
1> c:\programme\tribase\include\tribase.h(109): Siehe Deklaration von 'tbExit'
1>c:\dokumente und einstellungen\******\eigene dateien\visual studio 2005\projects\übung\übung\main.cpp(5) : error C2371: 'tbExit': Neudefinition; unterschiedliche Basistypen
1> c:\programme\tribase\include\tribase.h(109): Siehe Deklaration von 'tbExit'
1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\******\Eigene Dateien\Visual Studio 2005\Projects\Übung\Übung\Debug\BuildLog.htm" gespeichert.
1>Übung - 6 Fehler, 2 Warnung(en)[/list]

Mache ich etwas falsch, oder woran kann das liegen ? und ist es normal das man nach dem ersten Kapitel noch sehr wenig verstanden hat, habe das mit DirectX usw. verinnerlicht doch dann kommt plötzlich "Bauen wir uns eine eigene Engine" -> benutzen sie die vorgefertigte TriBase Engine. Vielleicht könnt ihr mir ja den roten Faden wieder geben.


Gruß

Schattenfang

2

21.02.2009, 14:33

wegen den Fehlern: guck mal in die FAQ ;)

wenn du im ersten kapitel nciht alles verstanden hast:
1. wie viele vorkenntnisse in der Win32-Programmierung hast du
2. manche sachen muss man ein paar mal lesen, bis man sie verstanden hat, das geht glaub jedem so

wegen nativem DX/TriBase engine: afaik wird doch im dritten kapitel auf basis des nativen DX aus dem zweiten kapitel erläutert, wie die TriBase engine arbeitet - da versteh ich nicht so ganz, was du meinst.

3

21.02.2009, 14:58

Zitat von »"PCShadow"«


wegen nativem DX/TriBase engine: afaik wird doch im dritten kapitel auf basis des nativen DX aus dem zweiten kapitel erläutert, wie die TriBase engine arbeitet - da versteh ich nicht so ganz, was du meinst.


So weit bin ich noch nicht, um den Rest kümmere ich mich jetzt.

edit : Habe es nun auch wie im FAQ angesprochenem vorgefertigter C++-Projektmappe (Win32-Konsolenanwendung (eine andere Auswahl bietet mir VC nicht)) gemacht doch nun bekomme ich nur noch mehr Fehlermeldungen, könntest du mir bitte einen simplen Code schicken mit dem ich ausprobieren kann ob es so funktioniert, danke.

Außerdem, ich wollte ein Beispiel von der CD kompilieren, dabei bekomme ich aber die Fehlermeldung :

[list]1>Ressourcen werden kompiliert...
1>.\Fenster.rc(10) : fatal error RC1015: cannot open include file 'mfc/afxres.h'.[/list]
Gleich im FAQ nachgeschlagen, dort heißt es ich soll das Platform SDK richtig einrichten, das ist auch alles richtig eingestellt, nur an einem kann es liegen, ich musste das Platform SDK 2008 runterladen, da 2003 nicht mehr verfügbar ist, kann es daran liegen ?

4

21.02.2009, 16:07

am besten schnappst du dir den Visual C++ 2008 statt dem 2005er, da ist afaik das platform SDK mit drin (und ansonsten isser auf jeden fall zu dem 2008er PSDK kompatibel) und der unterstützt auch direkt Win32-Anwendungen. Damit sollten die fehler sehr viel weniger werden.
von wegen der afxres.h:
1. ich weiß auch nicht, was man da machen kann
2. gabs darüber afaik schon ne menge Threads, guck einfach mal, ob du mit der forensuche was findest ;)

//EDIT: ja, es liegt irgendwie am 2008er PSDK, aber ich weiß nicht, woran genau

5

21.02.2009, 16:40

Integration von 2008 ist die selbe wie von 2005 oder ? ich muss es ja nun lediglich installieren, Includes und Libs eintragen und dann sollte es lauffähig sein, oder ?

Bin am installieren.

6

21.02.2009, 18:03

Okay, also compilieren usw. funktioniert jetzt einwandfrei.

Aber wie lautet den die "Musterlösung" zu Aufgabe 1 auf Seite 37, wurde diese bereits gepostet ?

edit : OK, läuft doch nicht so einwandfrei, DirectX und alles ist eingebunden doch wenn ich etwas compiliere kommt :

Die Anwendung konnte nicht gestartet werden, weil d3dx9d_30.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben.

Muss ich nun die d3dx9d_30.dll auch noch in den Ordner mitgeben (neben der TriBase.dll) ? [Der Fehler erscheint aber nur wenn ich im Debug-Modus kompiliere, im Release läuft es.]

7

21.02.2009, 19:29

ja, oder nach system32, schließlich ist das die DirectX-Runtime. Im Release läufts, weil die release-Runtimes beim normalen DirectX dabei sind, die debug-Runtimes dagegen nicht. die sind afaik in ner bestimmten Version des DX-SDK, aber auch problemlos im Inet zu finden. einer hier ausm Forum (BlackSnake?) bietet die auch auf seiner Homepage zum download.

8

21.02.2009, 21:23

Den Fehler mit der "d3dx9d_30.dll" haben scheinbar schon viele gehabt und das Problem wurde dadurch gelöst das sie die TriBase neu kompiliert haben, was ist damit gemeint, im Buch wird das nicht besprochen, soll ich nun die Engine versuchen zu starten ?

9

21.02.2009, 21:29

ähm, nein. Schnapp dir einfach die fehlende datei von hier und schieb sie in windows/system32

10

21.02.2009, 21:33

Zitat von »"PCShadow"«

ähm, nein. Schnapp dir einfach die fehlende datei von hier und schieb sie in windows/system32


hmmm, finde dort keine "d3dx9d_30.dll" dort heißt die älteste "d3dx9d_33.dll" und mit dieser funktioniert es nicht.

Werbeanzeige