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...


Anmelden zum Antworten