PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DirectX will nicht (Linker error)


ph
2004-03-15, 18:34:14
Ich möchte eigentlich nur 2 Funktionen verwenden:

DXGetErrorString9()
DXGetErrorDescription9()

Alles was man dem Computer so gutes tun kann hab ich gemacht:
dxerr9.h included
dxerr.lib dazugelinkt
dxguid dazugelinkt (Tip von Demi)
und trotzdem wirft er mir bösartigerweise Fehlermeldungen an den Kopf. Noch dazu solche wo man nicht weiß was das jetzt heißen soll:

Compiler: Default compiler
Building Makefile: "I:\Devcpp\terrain\Makefile.win"
Führt make... aus
make.exe -f "I:\Devcpp\terrain\Makefile.win" all
g++.exe main.o windowsystem.o exception.o log.o -o "terrain_devcpp.exe" -L"I:/Programme/Dev-Cpp/lib" -L"F:/Programme/DXSDK/Lib" -mwindows -lopengl32 -lglu32 -ldxguid -ldxerr9

F:/Programme/DXSDK/Lib\dxerr9.lib(obj/i386/dxerr9.obj.b)(.text+0x9):..\dxerr9.cpp: undefined reference to `_chkstk'
F:/Programme/DXSDK/Lib\dxerr9.lib(obj/i386/dxerr9.obj.b)(.text+0xb):..\dxerr9.cpp: undefined reference to `_chkstk'

make.exe: *** [terrain_devcpp.exe] Error 1

Ausführung beendet


Was soll ich nur tun?
Ich habe 2 Systeme, 1x WinXP, dort hab ich das DX SDK installiert und dort läuft alles (mit MS VC++6.0), und 1x Win2000, dort hab ich das SDK nicht installiert sondern nur das Verzeichnis wo die libs zu finden sind bekanntgegeben. Wird beim SDK vielleicht noch irgendetwas zusätzlich installiert und deshalb geht nix?
Debug <-> End User-Runtime?

Irgendwelche Ideen?

MfG

ScottManDeath
2004-03-15, 22:07:47
liegt wohl daran das die DirectX Runtime die Microsoft Visual C Laufzeitbibliotheken braucht.

Oder das lib Format ist inkompatibel zwischen MS und g++

Gast
2004-03-15, 23:29:53
Falls die dxerr.lib C Funktionen bereitstellt, dann kannst du die mit dem gcc verwenden, musst die aber umbenennen, da der gcc die Bibliotheksnamen mit folgender Namensgebung will "libNAME.a" , also die dxerr.lib in libdxerr.a umbenennen.

Gast
2004-03-15, 23:33:40
Okay, mein Fehler, hab' gerade riesen Schwachsinn geschrieben. :(

ph
2004-03-16, 08:30:20
Original geschrieben von ScottManDeath
liegt wohl daran das die DirectX Runtime die Microsoft Visual C Laufzeitbibliotheken braucht.


Also SDK installieren...
Original geschrieben von ScottManDeath
Oder das lib Format ist inkompatibel zwischen MS und g++
Das kann ich mir nicht vorstellen.

Auf jeden Fall danke für die Hilfe :)

MfG

Gast
2004-03-16, 16:19:19
Welches SDK muss man denn da installieren und in welcher Bibliothek ist denn "chkstk" ?

ph
2004-03-16, 20:00:19
Irgendwie ist das nicht lustig. Ich hab das SDK jetzt installiert:

Compiler: Default compiler
Building Makefile: "I:\Devcpp\terrain\Makefile.win"
Führt make... aus
make.exe -f "I:\Devcpp\terrain\Makefile.win" all
g++.exe main.o windowsystem.o exception.o log.o -o "terrain_devcpp.exe" -L"I:/Programme/Dev-Cpp/lib" -L"I:/Programme/DXSDK/Lib" -mwindows -lopengl32 -lglu32 -ldxerr9 -ldxguid

I:/Programme/DXSDK/Lib\dxerr9.lib(obj/i386/dxerr9.obj.b)(.text+0x9):..\dxerr9.cpp: undefined reference to `_chkstk'
I:/Programme/DXSDK/Lib\dxerr9.lib(obj/i386/dxerr9.obj.b)(.text+0xb):..\dxerr9.cpp: undefined reference to `_chkstk'

make.exe: *** [terrain_devcpp.exe] Error 1

Ausführung beendet


Hat sich überhaup etwas geändert? Ja, das SDK liegt jetzt auf I:\, das andere lag auf F:\ :bonk:

MfG

Demirug
2004-03-16, 20:41:22
Ich weiss schon warum ich einen MS-Compiler benutzten.

Für DevCpp muss man sich das SDK immer noch etwas zurecht biegen.

Dort http://public.www.planetmirror.com/pub/devcpp/ solltest du einen DirectX9 DevPak finden das alles was du brauchts enthält.

ph
2004-03-16, 20:53:08
Original geschrieben von Demirug
Ich weiss schon warum ich einen MS-Compiler benutzten.

Für DevCpp muss man sich das SDK immer noch etwas zurecht biegen.

Dort http://public.www.planetmirror.com/pub/devcpp/ solltest du einen DirectX9 DevPak finden das alles was du brauchts enthält.

Wuz? MS Software entwickeln nur auf MS Compilern?
Hat da jemand Monopol gerufen??

Ich hab ja den MS Compiler auch hier, aber ich möchte einfach mal andere Compiler auch ausprobieren. Noch dazu schert sich der MS Compiler nicht gerade viel um den C++ Standard, was wiederum in "läuft nur auf einem Compiler"-Code resultiert. Und das wollen wir vermeiden.

Auf jeden Fall danke für den Link ich schau mir das gleich mal an :)

MfG

Demirug
2004-03-16, 20:59:05
Original geschrieben von ph
Wuz? MS Software entwickeln nur auf MS Compilern?
Hat da jemand Monopol gerufen??

Ich hab ja den MS Compiler auch hier, aber ich möchte einfach mal andere Compiler auch ausprobieren. Noch dazu schert sich der MS Compiler nicht gerade viel um den C++ Standard, was wiederum in "läuft nur auf einem Compiler"-Code resultiert. Und das wollen wir vermeiden.

Auf jeden Fall danke für den Link ich schau mir das gleich mal an :)

MfG

Du darfst jeden Compiler benutzten den du willst nur mit einem MS-Compiler hat man eben am wenigsten Ärger.

Das Problem ist das bei C++ gerade im Bereich der Libs überhaupt nichts definiert ist.

ph
2004-03-16, 21:16:15
Original geschrieben von Demirug
Du darfst jeden Compiler benutzten den du willst nur mit einem MS-Compiler hat man eben am wenigsten Ärger.

Das Problem ist das bei C++ gerade im Bereich der Libs überhaupt nichts definiert ist.

Ich meinte eher so was

struct foo
{
int fritz;
int heinz;
}

foo thisshouldnotwork;

Läuft am MS, Error am gcc.

for (int auto = 0, auto < nirvana, auto++)
{
verbraterechenleistung()
}

int auto = 27;

Hier umgekehrt: Läuft am gcc, Error am MS.

Crushinator
2004-03-17, 14:53:30
Original geschrieben von ph
(...)

for (int auto = 0, auto < nirvana, auto++)
{
verbraterechenleistung()
}

int auto = 27;

Hier umgekehrt: Läuft am gcc, Error am MS. Das liegt daran, daß VC6 "schleifen-lokale" Variablen bzw. "scope of" für Variablen nicht unterstützt. gcc tut's seit Ewigkeiten, und wenn ich mich nicht irre, kann's VC7 aus dem VS.Net auch schon.

ph
2004-03-18, 19:09:28
Irgendwie ist es mir fast schon peinlich, aber ich komm nicht drauf.
*schäm*
Das Dx9 DevPak hat alle möglichen libs dabei nur kein dxerr9.a. Dafür eine dxerr9ab.dll. Was mach ich den mit der? Oder anders gefragt: Welches *.a file muss ich linken damit ich die dxerror-funktionen benutzen kann?

MfG

ph
2004-03-24, 15:15:39
Im Netz findet man zwar jede Menge Hinweise wie man DirectX mit Devcpp zum laufen bekommt, aber eben nur D3d, DirectSound, DPlay usw. Das ist mir ja auch klar: wenn ich D3D haben will nehm ich libd3d9.a. Aber zu den DX Error Funktionen findet man nirgends etwas, weder eine Anleitung im Nezt noch gibt es eine dxerr.a

Wenn jemand weiß wie ich diese benutzen kann möge er es mir bitte mitteilen. Für langwieriges Herumprobieren hab ich im Moment nicht genug Zeit :)

MfG