Visual C++ 2008 Direct X Problem!
-
Hallo,
Ich kann schon seit ca. 3 Monaten C++ Programmieren
und kann so einiges z.B das Thema Referenzen und Zeiger
ist mir bekannt und kann ich einsetzen.Vor 4 Tagen hab ich mir das Buch "3D-Spiele Programmierung" vom
Hanser Verlag gekauft der Autor heißt "Scherfgen"
ich bin ziemlich beeindruckt und interessiere mich sehr
Programmierung und Gedult hab ich allemale.Nur alls ich auf der Seite angekommen bin (S.107) wo das erste
BeispielProgramm geschrieben wird hab ich ein Problem.
Erstmal, benutze ich Visual C++ 2005, folgende datein hab ich
eingefügt, die Include Datein von "DirectSdkc 2005", "Microsoft Platform Sdk"
und von dem "TriBase Enigin (Ein Enigin vom Autor)" jeweils die Include Datein und die Libary Daten, so wie man es halt in Visual C++ einfügt unter
(Extra, Option etc.)Dann hab ich diesen Code:
#include <Windows.h> #include <StdIO.h> #include <D3D9.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd) { //Schnittstelle für DirectX erzeugen PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION); if(!pD3D) { MessageBox(NULL, "Fehler beim Erzeugen der Direct3D-Schnitstelle!", "Fehler", MB_OK | MB_ICONEXECLAMATION); //Fehler Meldung! return 1; } //Anzahl der Adapter ermitteln! int iNumAdapters = pD3DADAPTER_IDENTFIER9[iNumAdapters]; for(int iAdapter = 0; iAdapter < iNumAdapters; iAdapter++) { if(FAILED(pD3D->GetAdapterIdentifier(iAdapter,0, &pAdapters[iAdapter]))) { //FehlerMeldung MessageBox(NULL, "Adapterinformation konnnte nicht abgefragt werden!", "Fehler", MB_OK | MB_ICONEXECAMATION); //AUFRÄUMEN! pD3D->Release(); delete[] pAdapters; return 1; } //ADAPTERINFORMATION ANZEIGEN! char acAdapterInfo[1024]; sprint(acAdapterInfo, "Adapter-ID; %d\n" "Name: %s\n" "Treiber: %s\n" "nTreiberversion: %d", iAdapter, pAdapters[iAdapter].Description, pAdapters[iAdapter].Drivers, pAdapters[iAdapter].DriverVersion); MessageBox(NULL, acAdapterInfo, "Adapter Gefunden", MB_OK | MB_ICONINFORMATION); } //AUFRÄUMGEN pD3D->Release(); delete[] pAdapters; return 0; }Genau so vom Buch abgeschrieben, als ich es jedoch Kompilieren wollte
kamen viele Fehler:1>------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Test.cpp
1>c:\users\\desktop\test\test\test.cpp(5) : error C2871: 'std': Es ist kein Namespace mit diesem Namen vorhanden
1>c:\users\\desktop\test\test\test.cpp(17) : error C2065: 'MB_ICONEXECLAMATION': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(23) : error C2065: 'pD3DADAPTER_IDENTFIER9': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(28) : error C2065: 'pAdapters': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(32) : error C2065: 'MB_ICONEXECAMATION': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(36) : error C2065: 'pAdapters': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(36) : error C2541: 'delete': Objekte, die keine Zeiger sind, können nicht gelöscht werden
1>c:\users\\desktop\test\test\test.cpp(48) : error C2065: 'pAdapters': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(48) : error C2228: Links von ".Description" muss sich eine Klasse/Struktur/Union befinden.
1>c:\users\\desktop\test\test\test.cpp(49) : error C2065: 'pAdapters': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(49) : error C2228: Links von ".Drivers" muss sich eine Klasse/Struktur/Union befinden.
1>c:\users\\desktop\test\test\test.cpp(50) : error C2065: 'pAdapters': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(50) : error C2228: Links von ".DriverVersion" muss sich eine Klasse/Struktur/Union befinden.
1>c:\users\\desktop\test\test\test.cpp(42) : error C3861: "sprint": Bezeichner wurde nicht gefunden.
1>c:\users\\desktop\test\test\test.cpp(59) : error C2065: 'pAdapters': nichtdeklarierter Bezeichner
1>c:\users\\desktop\test\test\test.cpp(59) : error C2541: 'delete': Objekte, die keine Zeiger sind, können nicht gelöscht werden
1>Das Buildprotokoll wurde unter "file://c:\Users\**\Desktop\Test\Test\Debug\BuildLog.htm" gespeichert.
1>Test - 16 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Soo, was mach ich den Falsch ich hab wirklich alles versucht

Ich brauche Hilfe, danke schon mal im voraus!
Ps.: Google hab ich natürlich schon versucht, dann bin
ich aber hier hin gekommen
-
Hilfe! schrieb:
Ich kann schon seit ca. 3 Monaten C++ Programmieren und kann so einiges z.B das Thema Referenzen und Zeiger ist mir bekannt und kann ich einsetzen.
Vielleicht solltest du erst einmal auf dem "C++-Packet" sicher laufen (Ich traue dies jedenfalls nach 3 Monaten keinen zu).
Zudem verwende bitte die cpp-, statt den code-Tags für C oder C++ Code. Und ich nehme an das du statt <StdIO.h> wohl <cstdio> (C++) oder <stdio.h> (C) meinst => Auf manchen Systemen wird zwischen Groß- und Kleinschreibung unterschieden, so das ich mir hier nicht irgendwas angewöhnen würde, das so nicht ganz stimmt.
In dem C++ Header ist der Namensraum std definiert, nicht aber zwangsweise in <stdio.h> (Siehe hierzu bereits den ersten Fehler). Auch ist <windows.h> Bestandteil von der Windows-API, nicht von MFC (Falsches Unterforum).
-
Also erstmal Danke für deinen Beitrag, jedoch muss ich sagen
das ich das Thema mit Referenzen und den Zeigern schon, in ca. 10 Tagen
konnte, ich hab das Buch "C++ in 21 Tagen" gelesen.Mit der Groß oder klein schreibung von
#include <stdio.h> hat es auch dem anschein nichts zu tun.
Die gleichen Fehler bleiben vorhanden, auch nach viele Versuchen
von mir hat es noch immer nicht funktioniert
Hat jemand noch eine Idee
-
Sag mal, ließt du bitte mal deine Fehlermeldungen?
Was sind denn:
MB_ICONEXECLAMATION
pD3DADAPTER_IDENTFIER9 (Wie wär's mit 'nem 'I'?)Und pAdapters hast du nirgends definiert. Ich denke mal, das ist ein Array mit den Adaptern, also sollte das rein:
D3DADAPTER_IDENTIFIER9 *pAdapters = new D3DADAPTER_IDENTIFIER[iNumAdapters];Du solltest dringend Grundlagen lernen UND ein besseres C++-Buch kaufen.
-
Hilfe! schrieb:
jedoch muss ich sagen
das ich das Thema mit Referenzen und den Zeigern schon, in ca. 10 Tagen
konnte, ich hab das Buch "C++ in 21 Tagen" gelesen.Also wenn du schon die Grundlagen nicht beherrschst, und Zeiger und Refferenzen sind nun mal ein teil den man verstanden haben sollte, solltest du net mit DirectX anfangen. Du bist net der erste der denkt, ich schreib mal ein Spiel is ja net so schwer, und damit ganz hart auf die Nase fallt.
Lern wie schon gesagt erst mal die Grundlagen, ja auch Veriablen müssen Declariert und Initialisiert werden da C++ kein PHP is wo die bei der ersten benutzung declariert werden (was auch nach hinten los gehen kann), und wenn du dann na ch meist Jahren so weit bist und die übersicht hast, kannst dich in den Bereich DirectX wagen. Wobei nach meiner erfahrung nur die wenigsten es schaffen ein Spiel bis zum Ende fertig zu stellen, da der Weg lang und Steinig ist.
Nur ohne Grundlagen unmöglich, da du hier ständig fragen müsstest.Zum Schluß: Eigentlich hat deine Frage unter MFC gar nix zu suchen die gehört in den Bereich Spieleprogrmierung
So das ist mein Komentar zu deinem Problem
-
Also ich habe es doch noch alleine hingekriegt auch
ohne die Hilfe von euch
#include <windows.h> #include <cstdio> #include <D3D9.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd) { //Schnittstelle für DirectX erzeugen PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION); if(!pD3D) { MessageBox(NULL, "Fehler beim Erzeugen der Direct3D-Schnitstelle!", "Fehler", MB_OK | MB_ICONEXCLAMATION); //FEHLER!!!! return 1; } //Anzahl der Adapter ermitteln! int iNumAdapters = pD3D->GetAdapterCount(); D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters]; for(int iAdapter = 0; iAdapter < iNumAdapters; iAdapter++) { if(FAILED(pD3D->GetAdapterIdentifier(iAdapter,0, &pAdapters[iAdapter]))) { //Fehler Meldung MessageBox(NULL, "Adapterinformation konnnte nicht abgefragt werden!", "Fehler", MB_OK | MB_ICONEXCLAMATION); //AUFRÄUMEN! pD3D->Release(); delete[] pAdapters; return 1; } //ADAPTERINFORMATION ANZEIGEN!! char acAdapterInfo[1024]; sprintf_s(acAdapterInfo, "Adapter-ID; %d\n" "Name: %s\n" "Treiber: %s\n" "nTreiberversion: %d", iAdapter, pAdapters[iAdapter].Description, pAdapters[iAdapter].Driver, pAdapters[iAdapter].DriverVersion); MessageBox(NULL, acAdapterInfo, "Adapter Gefunden", MB_OK | MB_ICONINFORMATION); } //AUFRÄUMGEN pD3D->Release(); delete[] pAdapters; return 0; }Ich habe ausversehen ein paar Fehler eingebaut weil ich
ein bissian Augen Probleme habe. (das ist nicht Ironisch)
Das mit dem "Ich hab schon alles versucht" sollte nur sein, damit
ich nicht gesagt bekomme, das ich es selber versuchen soll
Aber selbst bei der Frage könnt ihr mir da helfen,
muss ein Vortrag gehalten werden über, das glaub ich nicht
und lern die grundlagen (..blabla..) anstatt einfach nur die Fehler stellen zu nennen
Zu euch Witzfiguren

1.Ich kann C++ und habe zu diesem Thema 3 Bücher gelesen!
2.Ich konnte eigentlich die Fehler selber Berrichtigen (wie ihr seht) hatte aber keine Zeit um selber nach den Fehlern zu suchen weil
ich weg musste, deswegen hab ich hier schnell nach hilfe gefragt.
3.D3DADAPTER_IDENTIFIER9 *pAdapters = new D3DADAPTER_IDENTIFIER[iNumAdapters];
Wohleher:
D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters];4.Ich lass mir sowas nicht gefallen, ich bin nicht jemand der
nicht weiß wie lange es dauert ein Spiel zu programmiern.
ICH weiß das es lange dauern kann, und wie gesagt befasse ich mich
schon seit 3 Monaten mit C++ ich wollte mal was anderes machen als
ständig diese Konsolen Programme zu benutzen, aber da ich mich nicht mit der GUI befassen wollte hab ich DirectX gewählt.
Wie sagt man so schön Außen Hui, innen fui

-
Hilfe! schrieb:
Zu euch Witzfiguren

1.Ich kann C++ und habe zu diesem Thema 3 Bücher gelesen!Hut ab, scheinst ein Genie zu sein (oder noch nicht mal ansatzweise zu wissen was C++ alles umfasst, alleine für die Standardbibliothek, Template- und Templatemetaprogrammierung gibt es nicht ohne Grund Bücher, und wie "einfach" die Sprache ist, sollte man schon an den Büchern von Scott Meyer und Herb Sutter ersehen).
Ich gestehe dir (sofern du vorher schon Programmierkenntnisse hattest) durchaus gewisse Grundkenntnisse zu, aber ich kenne im beruflichen Umfeld keinen einzigen der C++ in unter einem Jahr auch nur in den wesentlichsten bereichen wirklich konnte. Und selbst nach 10 Jahren C++ lern ich immer wieder neues,
Hilfe! schrieb:
4....und wie gesagt befasse ich mich
schon seit 3 Monaten mit C++ ich wollte mal was anderes machen als
ständig diese Konsolen Programme zu benutzen, aber da ich mich nicht mit der GUI befassen wollte hab ich DirectX gewählt.Ohh, statt GUI nimmst du also eine GUI (DirectX ist auch eine grafische Oberfläche, wenn auch nicht unbedingt eine Oberfläche für Standardanwendungen), und ich hoffe du bist in Mathe mehr als nur gut... Davon abgesehen das DirectX auch deutlich komplexer als eine "normale" GUI ist.
cu André
P.S: Und dein Punkt 2 finde ich einfach nur dreist.
-
@asc:
Danke du hast da das zusammengefasst was hier warscheinlich viele geschrieben hätten. Wobei wenn hier noch mehr auftauchen die fragen hier rein stellen die sie selbst beantworten könnten, aber das net machen weil se halt mal keine Zeit, werde ich mir überlegen noch jemanden zu helfen
. Wobei noch keine festgestellt hat das dieses Wundergenie welches in 3 Monaten das perfekt bringt wofür andere Jahre brauchen, bestimmt schon mit 7 Jahren sein abi gemacht hat und jetzt schon 2 Doktortitel hat. So Dreist is hier denk ich noch keiner aufgetreten