Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
alias Mini JLI'ler
Anmeldedatum: 04.02.2007 Beiträge: 7
Medaillen: Keine
|
Verfasst am: 04.02.2007, 11:39 Titel: [Kapitel 19 DirectXGraphics] Linker Fehler (?) |
|
|
Hallo
Auf grund eines Schulprojekts versuche ich ein wenig DirectX zu lernen. Deswegen habe ich mir das buch jli Spielerprogrammierung mit DirectX gekauft. Bis zu Kaptitel 19 hat noch alles geklappt, aber jetzt gibs probleme. Ich hoffe hier könnt mir weiterhelfen.
Einen quelltextfehler schließe ich eigentlich aus, da ich inzwischen den gleich Quelltext benutze der der auf der CD zum Kapittel 19 DirectXGraphics ist.
Aber zum fehler:
In Kapittel 19 werden zum ersten mal DX Bibliotheken verwendet um z.B. die Funktion Direct3DCreate9(D3D_SDK_VERSION) ausführen zu können. Deshalb müssen die entsprechenden Bibliotheken dem Projekt hinzugefügt werde. Ich denke hier muss ich irgendwas falsch machen, leider weiss ich nicht was
Bei der Angabe der lib-Ordner war mir nicht klar welchen ordner ich jetzt genau einbinden muss (../lib oder ../lib/x86) da im buch beides gesagt wird. Deshalb hab ich beide Pfade angegeben.
Bei den Bibliotheken hab ich auch eine absolute Pfadangabe versucht, ohne Erfolg.
Und als Fehlermeldung bekomme vom Microsoft Visual C++:
-------------- Build: default in DirectXGraphics ---------------
Execution of 'cl.exe /nologo /ML /Gd /GX /O2 /W3 /I"C:\Programme\Microsoft DirectX 9.0 SDK (October 2005)\Include" /I"C:\Programme\Microsoft Visual C++ Toolkit 2003\include" /I"C:\Programme\Microsoft Platform SDK\Include" /c DirectXGraphics.cpp /Fo.objs\DirectXGraphics.obj' in 'D:\schule\nta - aik - projekt\buch jli sidX\19.0\DirectXGraphics' failed.
Und vom GNU GCC Compiler (den ich normalerweise benutze):
-------------- Build: default in DirectXGraphics ---------------
Compiling: DirectXGraphics.cpp
Linking executable: DirectXGraphics.exe
.objs\DirectXGraphics.o(.text+0x360):DirectXGraphics.cpp: undefined reference to `Direct3DCreate9@4'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
1 errors, 0 warnings[/img]
ich danke euch schon mal |
|
Nach oben |
|
 |
manu Super JLI'ler

Alter: 35 Anmeldedatum: 09.03.2006 Beiträge: 327 Wohnort: allgäu (DE) Medaillen: Keine
|
Verfasst am: 04.02.2007, 11:49 Titel: |
|
|
Hi,
binde mal nur den ordner /lib/x86 ein.
und dann halt noch die d3d9.lib dem Projekt hinzufügen. Entweder in den Projektoptionen wie warscheinlich im Buch beschrieben __oder__ per Präprozessor-Direktive direkt zu Beginn im Code.
CPP: | #pragma comment(lib, "d3d9.lib") |
|
|
Nach oben |
|
 |
alias Mini JLI'ler
Anmeldedatum: 04.02.2007 Beiträge: 7
Medaillen: Keine
|
Verfasst am: 04.02.2007, 13:46 Titel: |
|
|
Habs probiert. Leider immer noch das selbe. |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 04.02.2007, 15:47 Titel: |
|
|
Soweit ich weiß, ist die Reihenfolge der Verzeichnisse, die du angibst, auch wichtig. Hast du mal versucht, da ein bisschen rumzuspielen?
Hast du mal geschaut, ob die Libs überhaupt in dem Verzeichnis existieren?
Wenn alles nichts hilft, würde ich mal das SDK und/oder deine IDE neu installieren. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
alias Mini JLI'ler
Anmeldedatum: 04.02.2007 Beiträge: 7
Medaillen: Keine
|
Verfasst am: 10.02.2007, 11:47 Titel: |
|
|
Ne, hat alles leider nichts geholfen
Hmm . . . Was vielleicht noch zu sagen wäre, wenn ich die zeile
lpD3D = Direct3DCreate9(D3D_SDK_VERSION);
auskommentiere, kann ich kompielieren und das Programm starten. Dann tut es aber nicht viel.
Woran kann es denn liegen das Direct3DCreate9() nicht gefunden wird? |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.02.2007, 12:02 Titel: |
|
|
Kennt der etwa nur D3DCreate nicht, aber die anderen D3D Funktionen und Objkete und was weiß ich ws doch? Das ist eigentlich komisch. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
 |
alias Mini JLI'ler
Anmeldedatum: 04.02.2007 Beiträge: 7
Medaillen: Keine
|
Verfasst am: 11.02.2007, 10:55 Titel: |
|
|
Jetzt ist mir noch was aufgefallen.
Wenn ich die Beispielprogramme aus dem buch deinstalliere und wieder
installiere ist es mir möglich die Beispielprogramme zu Kompilieren und
auszuführen. Drücke ich jedoch auf Rebuild bekomme ich den oben genanten
Meldungen und ich kann nicht mehr ausführen. |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.02.2007, 14:44 Titel: |
|
|
das könnte daran liegen, dass die beispiele ausm buch vorkompiliert sind und der beim ersten Benutzen einfach nur die fertige exe startet. Beim rebuild wird dann neu erstellt mit deinem linker...
Gruß DXer |
|
Nach oben |
|
 |
Reboot Mini JLI'ler

Anmeldedatum: 24.01.2007 Beiträge: 23
Medaillen: Keine
|
Verfasst am: 11.02.2007, 16:50 Titel: |
|
|
Du brauchst ein DevPack dafür. Bei Dev-C++ hat man das selbe Problem.
Probier's mal damit. Es kann sein, dass du die Libs manuell kopieren musst.
http://devpaks.org/details.php?devpak=136
Der Linker kann mit den Libs der Form .lib wenig anfangen. Du brauchst welche im .a Format. Und diese sind im DevPack bei. _________________ Sprachen: C/C++, C#, Assembler (16-Bit), QuickBASIC |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 11.02.2007, 22:55 Titel: |
|
|
Man braucht kein DevPack, ich kann es kompilieren. Kannst du nochmal alle Einstellungen nochmal prüfen. |
|
Nach oben |
|
 |
alias Mini JLI'ler
Anmeldedatum: 04.02.2007 Beiträge: 7
Medaillen: Keine
|
Verfasst am: 12.02.2007, 13:41 Titel: |
|
|
Ja klar. Wenn bis her niemand sonst diese Probleme hier gemeldet hat, ist es fast sicher das ich was falsch gemacht habe.
Aber jetzt mal alles schrittweise durchgehen:
- Code::Block deinstallieren und alle Einstellungen löschen
- Microsoft Plattform SDK deinstallieren
- Microsoft Visual C++ Toolkid 2003 Deinstallieren
- Microsoft DirectX 9.0 SDK Update (Oktober 2005) deinstallieren
- Jetz lern ich Spieleprogrammierung mit DirektX deinstallieren
- PC neustarten
- Microsoft Visual C++ Toolkit 2003 installieren
- Microsoft Plattform SDK installieren, bei der Installation Typical auswählen
- Code::Blocks installieren
- Beispielprogramme installieren
Im Code::blocks Compiler Settings
- Microsoft Visual C++ Toolkid 2003 als default-Kompiler setzen
- Flag Enable warnings level 3 setzen
- Flag Maximize Speed setzen
- Flag Enable C++ Exception Handling setzen
- Flag __cdecl calling convention setzen
- Flag Singel-threaded runtime Library setzen
Reiter Directories / Compieler
- C:\Programme\Microsoft Visual C++ Toolkit 2003\include
- C:\Programme\Microsoft Platform SDK\Include
Reiter Directories / Linker
- C:\Programme\Microsoft Visual C++ Toolkit 2003\lib
- C:\Programme\Microsoft Platform SDK\Lib
- Microsoft DirectX 9.0 SDK installieren
Reiter Directories / Compieler und Linker
- C:\Programme\Microsoft DirectX 9.0 SDK (October 2005)\Include
- C:\Programme\Microsoft DirectX 9.0 SDK (October 2005)\Lib\x86
Hinzugefügt und nach oben geschoben.
Beispielprogramm läst sich Kompilern. Nachdem ich auf rebuild klicke läst es sich nicht mehr Kompiliren.
Mehr fällt mir nicht ein. Keine Ahnung was ich vergessen hab. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 12.02.2007, 14:00 Titel: |
|
|
d.h. du kannst jedes Projekt compilieren, aber nur einmal?
Bei Visaul Studio zumindest gibt es eine Funktion, das Projekt "nuer" erstellen zu lassen. Das bedeutet, dass alle Temporären Dateien (*.obj und son Kram) gelsöcht werdne und neu erstellt werden. Dann müsste es eigneltich so sein, als ob du es nie erstellt hättest. Zwar ein komische Problem, aber ne Idee wärs. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
alias Mini JLI'ler
Anmeldedatum: 04.02.2007 Beiträge: 7
Medaillen: Keine
|
Verfasst am: 12.02.2007, 15:36 Titel: |
|
|
Nicht ganz. Ich kann die Beispielprogramme auch mehrmals compilieren, aber nicht bauen (sagt man das so?). Also das zusammenfügen funktioniert nicht. So interpretiere ich zumindest. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 12.02.2007, 15:49 Titel: |
|
|
äh, also einfach ein LInker fehelr, aber das kompilieren klappt?
Dann liegts ja doch nur an den Linkereinstellungen.
Wie siehts mit der dxguid.lib aus?
Ist die eingebunden? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
|