DirectX Programme mit mingw erstellen
-
Hallo,
ich möchte mich ein wenig in DirectX einarbeiten und habe dazu DirectX SDK (August 2009) heruntergeladen und installiert. In DirectX Sample Browser (August 2009) gibt es ein Tutorial für DirectX 9.0. Von "Tutorial 1: CreateDevice" bis "Tutorial 6: Meshes" - diese Tutorials möchte ich mir anschauen, mit mingw erstellen und ein wenig rumspielen. Tutorial 1 und 2 konnte ich mit kleinen Änderungen im Code kompilieren und linken. Soweit ok. Beim "Tutorial 3: Matrices" habe ich festgestellt, dass einige Datentypen wie D3DXMATRIXA16 und D3DXVECTOR3 u.a. in mingw Header-Dateien fehlen. Wenn man die Include-Dateien und die Libs von DirectX SDK benutzt, kompiliert und linkt die Anwendung erfolgreich. Also, je weiter im Tutorial, desto schwieriger wird es... Lohnt es sich da mit mingw weiterzumachen? Würdet ihr doch zu MS Visual Studio (ungern) empfehlen?
Mich stören noch die hunderte Warnungen von g++ in Original SDK Header-Dateien. Da werden tatsächlich floats mit == miteinander verglichen und viele Variablen unsauber initialisiert. MS Compiler ist da wohl toleranter... oder ist das normal, dass man viele Warnungen auch unter MS Compiler bekommt?
-
MinGW liefert eigentlich eigene DirectX9 Header mit bzw angepasst und auch eine Lib dafür.
Schau mal ins mingw-verzeichnis. Ansonsten google mal nach dem Paket.
rya.
-
Scorcher24 schrieb:
MinGW liefert eigentlich eigene DirectX9 Header mit bzw angepasst und auch eine Lib dafür.
Schau mal ins mingw-verzeichnis. Ansonsten google mal nach dem Paket.
rya.Ich habe in dem Verzeichnis gesucht. Es gibt ein Paar DirectX Header Dateien, nur, wie gesagt, fehlen da diese Datentypen. Ich habe inzwischen die Tutorials kompilieren können (mit einigen eigenen Änderungen im Code) und alle 6 sind lauffähig.
Mein Makefile sieht wie folgt aus (falls es jemand interessiert):CXXFLAGS = -W #CXXFLAGS += -Werror CXXFLAGS += -Wall CXXFLAGS += -Wextra CXXFLAGS += -Wabi CXXFLAGS += -Wreorder CXXFLAGS += -Weffc++ CXXFLAGS += -Wsign-promo CXXFLAGS += -Wformat-nonliteral CXXFLAGS += -Wformat-security CXXFLAGS += -Wformat=2 CXXFLAGS += -Winit-self CXXFLAGS += -Wuninitialized CXXFLAGS += -Wswitch CXXFLAGS += -Wswitch-default CXXFLAGS += -Wswitch-enum CXXFLAGS += -Wunused-parameter CXXFLAGS += -Wunused CXXFLAGS += -Wunknown-pragmas CXXFLAGS += -Wfloat-equal CXXFLAGS += -Wundef CXXFLAGS += -Wshadow CXXFLAGS += -Wpointer-arith CXXFLAGS += -Wcast-qual CXXFLAGS += -Wcast-align CXXFLAGS += -Wwrite-strings CXXFLAGS += -Wconversion CXXFLAGS += -Waggregate-return CXXFLAGS += -Wpacked CXXFLAGS += -Wpadded CXXFLAGS += -Wredundant-decls CXXFLAGS += -Winvalid-pch INCPATH = -I"C:\Programme\Microsoft DirectX SDK (August 2009)\Include" LIBS = -lwinmm LIB_A = "C:\Programme\Microsoft DirectX SDK (August 2009)\Lib\x86\d3d9.lib" LIB_B = "C:\Programme\Microsoft DirectX SDK (August 2009)\Lib\x86\d3dx9.lib" all: @echo @echo Compiling... @echo mingw32-g++ -c main.cpp -o main.o -mwindows $(CXXFLAGS) -O2 $(INCPATH) @echo @echo Linking... @echo mingw32-g++ main.o -o main.exe -mwindows $(CXXFLAGS) $(LIBS) $(LIB_A) $(LIB_B) @echo @echo No errors. @echo clean: rm -fv main.o main.exe
-
Habe es nun aufgegeben, mit mingw zu kompilieren. Je mehr Libs man aus dem DirectX SDK einbindet, desto mehr undefinierte Symbole bekommt man beim Linken. Es scheint doch einfacher zu sein, Visual Studio 2008 mit dem Microsoft Compiler zu verwenden...