DirectX in Dev-Cpp



  • bevor ihr jetzt irgendwas von FAQ sagt... da hab ich nachgeguckt, beim ersten link zum dev pak steht das man das web utility von dev-cpp benutzen soll.. leider kann ich kein pak für direktX finden...

    zweiter link für directx 9 scheint tot zu sein 😕

    also wie gesagt^^ ich brauch hilfe... wo kann ich denn das pak genau finden?



  • Eigentlich sollte auch das DirectX SDK von Microsoft funktionieren. Du musst in DEV-CPP dann nur die zu linkenden Libraries von hand eingeben. Mit ein paar veränderungen konnte ich es sogar mit dem Borland C++ zum laufen bringen. Da wars aber noch die Version 8 von DirectX.



  • hmm. ich habs mir geladen und bin bei devCPP auf:
    Werkzeuge/compiler optionen
    dann auf Verzeichnisse und auf Bibliotheken.
    dort habe ich den pfad zu den libs eingegeben und auf hinzufügen.
    bei c++ includes den pfad zu den directx headern.

    hab ich was falsch gemacht?

    jetzt hab ich eins von den samplen versucht zu kompilieren:
    im tutorial ordner irgendwas mit create device, und folgende fehler bekommen

    F:\Michel\DevCPP\lib\directX\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\CreateDevice.cpp In file included from F:\Michel\DevCPP\lib\directX\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\CreateDevice.cpp 
    
    F:\Michel\DevCPP\lib\directX\Include\strsafe.h [Warning] comparison is always false due to limited range of data type
    C:\DOKUME~1\Habranke\LOKALE~1\Temp\ccYjaaaa.o(.text+0xe) In function Z7InitD3DP6HWND__': 
    [Linker error] undefined reference to `Direct3DCreate9@4' 
    C:\DOKUME~1\Habranke\LOKALE~1\Temp\ccYjaaaa.o(.text+0xe) ld returned 1 exit status
    

    Autsch.
    was hab ich denn falsch gemacht?



  • Du musst nicht nur die Pfade zu den Libs angeben. Du musst die Libs auch mitlinken...



  • ich hoffe ich nerve nicht...:s

    ich hab ein neues projekt gestartet und bin unter projekt einstellungen.. irgendwo hab ich da was mit makefile gesehen...

    ich will jetzt aber nicht immer ein neues projekt starten nur um einen kleinen code zu testen :s .
    kannst du mir sagen (wenn es möglich ist) unter welchen menü ich das einbinden kann?



  • Du musst leider immer ein neues Projekt starten. Aber du kannst ein Template erstellen, dass du dann auswählen kannst, wenn du eine neues Projekt startest. Klicke dazu einfach auf File->New->Projekt und dann auf File->New->Template.



  • wenigstens sinds nun weniger fehler

    [Linker error] undefined reference to `Direct3DCreate9@4' 
    ld returned 1 exit status 
    F:\Michel\DevCPP\Makefile.win [Build Error]  [Projekt2.exe] Error 1
    

    kann es sein das die linker error kommen wenn eine lib nicht gefunden wird? hab keine mit den namen "Direct3DCreate..." gefunden...

    (gleich lass ich es mit directx und nehm lieber openGL tuts...)



  • Rubiko schrieb:

    kann es sein das die linker error kommen wenn eine lib nicht gefunden wird?

    Ja.

    Rubiko schrieb:

    hab keine mit den namen "Direct3DCreate..." gefunden...

    Das ist auch keine Lib, sondern eine Funktion. Diese ist wiederum in der d3d Lib, welche du deinem Linker mitgeben musst.



  • finde keine lib die so heißt ... nur viele die mit d3d anfangen ... nur einen header der d3d heißt und den sein include verzeichnis is eh schon eingetragen...
    hab sogar die suchfunktion verwendet ...
    -nerv-



  • Trag doch einfach alle Libraries, die bei DirectX Dabei waren unter Project->Options unter der Registrierkarte Parameters im Feld Libraries ein. Der Linker sollte die ignorieren, die er nicht braucht.

    Außerdem solltest du etwas mehr Geduld mitbringen. Das was du da vor hast ist nicht einfach. Und erst recht nicht, wenn man noch nie mit externen Libraries gearbeitet hat. Wenn du erst mal die Beispiele compilieren kannst, dann hast du die kleinste Hürde überwunden. Danach musst du sie verstehen und das ist nicht so leicht, wie eine Library einzubinden.



  • mir kommt es nur so vor, dass ich nerv, ist das nicht so?
    ich will nicht auf die schnelle mal eben super directX programmierer werden...

    es gibt zwei verzeichnisse mit libs: X86 und X64
    ich hab alle zusammen eingebunden... fehler (maschinentyp)

    nur die im X86.. winmain fehlt

    und wenn ich die im 64er einbinde bekomm ich maschinentypfehler(?) ->

    Unrecognised machine type (0x8664) in Import Library Format archive
    

    + linker error (winmain, selber fehler wie oben)



  • Rubiko schrieb:

    finde keine lib die so heißt ... nur viele die mit d3d anfangen ... nur einen header der d3d heißt und den sein include verzeichnis is eh schon eingetragen...
    hab sogar die suchfunktion verwendet ...
    -nerv-

    Hier wurde der Tipp gegeben, dass du auch das DirectX SDK von Microsoft verwenden kannst. IIRC geht das mit GCC aber nicht. Für GCC gibts eigene Header und Libs. Falls die bei Dev-C++ noch nicht dabei sind, dann schau mal bei http://www.mingw.org/ vorbei. Dort solltest du alles benötigte unter Windows API finden.
    Für Direct3DCreate9 brauchst du jedenfalls libd3d9.a.



  • mir hat keiner gesagt das die lib NICHT im directx ordner ist, hab im normalen lib ordner aus zufall jetzt nachgeguckt, und sie gefunden...
    zwar keinen winmain fehler, aber dafür andere:

    F:\Michel\DevCPP\lib\main.cpp In file included from lib/main.cpp 
    F:\Michel\DevCPP\lib\directX\Include\strsafe.h In function `HRESULT StringGetsExWorkerW(wchar_t*, size_t, size_t, wchar_t**, size_t*, long unsigned int)': 
    
    // undn warning
    F:\Michel\DevCPP\lib\directX\Include\strsafe.h [Warning] comparison is always false due to limited range of data type
    

Anmelden zum Antworten