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

04.05.2008, 14:57

Fehler mit Dx9+TriBase

Hallo,
nachdem ich endlich mein Fenster mit Hilfe von TriBase erschaffen hab, wollte ich ans zweite listing.

Ich habe es mal versucht zu kompilieren.

Fehler:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Befehlszeilen
        

Die temporäre Datei "c:\Dokumente und Einstellungen\Fabi\Desktop\Dreieck\Dreieck\Dreieck\Debug\RSP0000019961956.rsp" wird erstellt. Inhalt:
[
/OUT:"C:\Dokumente und Einstellungen\Fabi\Desktop\Dreieck\Dreieck\Debug\Dreieck.exe" /INCREMENTAL /MANIFEST /MANIFESTFILE:"Debug\Dreieck.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Dokumente und Einstellungen\Fabi\Desktop\Dreieck\Dreieck\Debug\Dreieck.pdb" /SUBSYSTEM:WINDOWS /DYNAMICBASE /NXCOMPAT /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

".\Debug\Direct3DEnum.obj"

".\Debug\Dreieck.obj"

".\Debug\InitDirect3D.obj"

".\Debug\InitWindow.obj"

".\Debug\Dreieck.exe.embed.manifest.res"
]Erstellen der Befehlszeile "link.exe @"c:\Dokumente und Einstellungen\Fabi\Desktop\Dreieck\Dreieck\Dreieck\Debug\RSP0000019961956.rsp" /NOLOGO /ERRORREPORT:PROMPT"

Ausgabefenster
        

Verknüpfen...
Direct3DEnum.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_Direct3DCreate9@4" in Funktion ""enum tbResult __cdecl GetDirect3DParameters(struct SDirect3DParameters *)" (?GetDirect3DParameters@@YA?AW4tbResult@@PAUSDirect3DParameters@@@Z)".
InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_Direct3DCreate9@4".
Dreieck.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorString9A@4" in Funktion ""enum tbResult __cdecl Render(float)" (?Render@@YA?AW4tbResult@@M@Z)".
InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorString9A@4".
Dreieck.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorDescription9A@4" in Funktion ""enum tbResult __cdecl Render(float)" (?Render@@YA?AW4tbResult@@M@Z)".
InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorDescription9A@4".
C:\Dokumente und Einstellungen\Fabi\Desktop\Dreieck\Dreieck\Debug\Dreieck.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.


Ich habe es auch mit

C-/C++-Quelltext

1
#pragma comment ( lib, "TriBase.lib) // auch mit TriBaseD.lib

Aber hat auch nix genützt

Bitte um Hilfe

2

04.05.2008, 15:19

Hast du vergessen die DX-Libs (d3d9.lib, d3dx9.lib, Dxerr.lib...) mitzulinken?

3

04.05.2008, 15:21

Hmm, aslo die habe ich nicht gelinkt, welche muss ich den linken?
Und das auch mit #pragma comment ?

4

04.05.2008, 15:22

...

Ok
Bei Linkermeldungen sollte man zuerst mal danach suchen. Irgendwer hatte die IMMER schonmal, und irgendwer gibt dann die Antowrt darauf, welche Lib man einbinden muss.
Wenn du mit der Fehlermeldung nix findest, gibts du direkt den Namen ein, also z.B. "_DXGetErrorDescription9A@4". Wenn du dazu immer noch nichts findest, kannst du auch die komischen Zeichen weglassen und nur nach "DXGetErrorDescription9" suchen. Oder du kannst von den entsprechenden Funktionen in der Doku nachschauen.

Wenn du dann immer noch nicht weißt, was du falsch machst, kannst du daraufhin auch ein ein Forum gehen und fragen.
Lieber dumm fragen, als dumm bleiben!

5

04.05.2008, 15:24

Die angegebenen Libs.
Entweder über Projekteinstellungen - Linker - Eingabe, oder über Pragma. Was dir besser gefällt, bzw. was deinem Compiler besser gefällt.

6

04.05.2008, 15:40

Juhu, es klappt... aber was ist das ?
Wenn ich die .EXE starte, schließt sie automatisch.
LogBuch:

INFO: TriBase-Engine wird initialisiert... (TriBase.cpp, Zeile 86, Funktion tbInit) INFO: Initialisierung komplett! (TriBase.cpp, Zeile 104, Funktion tbInit) WARNUNG: tbExit wurde nicht aufgerufen! Wird automatisch erledigt... (TriBase.cpp, Zeile 48, Funktion DllMain) INFO: TriBase-Engine wird heruntergefahren... (TriBase.cpp, Zeile 113, Funktion tbExit) INFO: Alle Speicherbereiche freigegeben! (tbMemory.cpp, Zeile 116, Funktion tbMemExit) INFO: Herunterfahren abgeschlossen! (TriBase.cpp, Zeile 149, Funktion tbExit)

7

04.05.2008, 16:24

Das ist ja auch richtig, jedes funktionierende Programm, beendet sich, wenn es fertig ist.
Lieber dumm fragen, als dumm bleiben!

8

04.05.2008, 16:29

Aber es muss doch ein rotierendes Dreieck zeichnen =)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

9

04.05.2008, 16:33

Zitat von »"Unknown"«

Aber es muss doch ein rotierendes Dreieck zeichnen =)


Na dann schau mal, wo er abbricht. (Mit Debugger).

Scheint ja regulär runterzufahre, ausser, dass du tbExit nicht aufrust.

10

04.05.2008, 16:44

Das spuckt der Debugger aus :

[.....noch weitere .dll's.....]
"Dreieck.exe": "C:\WINDOWS\system32\shlwapi.dll" wurde geladen
"Dreieck.exe": "C:\WINDOWS\system32\comctl32.dll" wurde geladen
"Dreieck.exe": "C:\WINDOWS\system32\shell32.dll" wurde geladen
"Dreieck.exe": "C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll" wurde geladen
"Dreieck.exe": "C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll" wurde geladen
INFO: TriBase-Engine wird initialisiert... (TriBase.cpp, Zeile 86, Funktion tbInit)
"Dreieck.exe": "C:\WINDOWS\system32\uxtheme.dll" wurde geladen
"Dreieck.exe": "C:\WINDOWS\system32\MSCTF.dll" wurde geladen
INFO: Initialisierung komplett! (TriBase.cpp, Zeile 104, Funktion tbInit)
WARNUNG: tbExit wurde nicht aufgerufen! Wird automatisch erledigt... (TriBase.cpp, Zeile 48, Funktion DllMain)
INFO: TriBase-Engine wird heruntergefahren... (TriBase.cpp, Zeile 113, Funktion tbExit)
INFO: Alle Speicherbereiche freigegeben! (tbMemory.cpp, Zeile 116, Funktion tbMemExit)
INFO: Herunterfahren abgeschlossen! (TriBase.cpp, Zeile 149, Funktion tbExit)



Das Programm "[2152] Dreieck.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.


Ich seh da nix falsches :?

Werbeanzeige