Einfach D3D9 Versuch geht schief (Dev-C++)



  • Hallo,

    Ich habe das D3D9 Devpack installiert, doch beim kompilieren von

    /*  
     *   Versuch zum Erstellen einer Direct3D Schnittstelle 
     *   29. September 2005  
     */ 
    
    /* Includes */ 
    #include <windows.h> 
    #include <d3d9.h> 
    
    /* Libraries einbinden */ 
    #pragma comment(lib,"d3d9.lib")  //Wird die gebraucht? 
    #pragma comment(lib,"libd3d9.a") 
    #pragma comment(lib,"libdxguid.a") 
    
    //Gibt ein COM-Objekt frei 
    template<typename T> inline void ReleaseObject(T*& object) 
    { 
        if (object != NULL) 
        { 
            object->Release(); 
            object = NULL; 
        }        
    } 
    
    int WINAPI WinMain (HINSTANCE Instance, 
                        HINSTANCE PrevInstance, 
                        LPSTR Argument, 
                        int Show) 
    { 
        PDIRECT3D9 Direct3D = Direct3DCreate9(D3D_SDK_VERSION); 
    
        ReleaseObject(Direct3D); 
    
        return 0; 
    }
    

    kommt dieser Linker-Fehler: [Linker error] undefined reference to `Direct3DCreate9@4'

    Könnt ihr mir helfen? 🙂



  • *schmarn*



  • Wie auch auf Spieleprogrammierer.de empfehle ich dir den Compiler zu wechseln.

    Gruß



  • das mit dem pragma ist M$ spezifisches Zeug. Unter Dev-Cpp musst du verwendete Libs unter

    Tools -> Compiler Optoins -> "add this ... to linker commandline"

    oder projekt -> projekt Optionen

    angeben.

    Damit sollte es funktionieren

    PS: der Befehl, den du eintragen musst lautet: -ld3d9
    -l : Lib einbinden beim Linken
    Danach der Name ohne .a und lib am Anfang

    Edit2: Hab noch mal nachgesehen. das mit pragma scheint doch zu funktionieren.
    Aber unter Tools -> Compiler Optoins -> Directories musst du den richtigen Pfad einstellen, unter dem die Lib zu finden ist, Vielleicht liegt das daran



  • leo_ schrieb:

    #pragma comment(lib,"d3d9.lib")
    #pragma comment(lib,"libd3d9.a") 
    #pragma comment(lib,"libdxguid.a")
    

    Die .lib kann ja gar nicht funktionieren.



  • gurru schrieb:

    das mit dem pragma ist M$ spezifisches Zeug. Unter Dev-Cpp musst du verwendete Libs unter

    Tools -> Compiler Optoins -> "add this ... to linker commandline"

    oder projekt -> projekt Optionen

    angeben.

    Damit sollte es funktionieren

    PS: der Befehl, den du eintragen musst lautet: -ld3d9
    -l : Lib einbinden beim Linken
    Danach der Name ohne .a und lib am Anfang

    Edit2: Hab noch mal nachgesehen. das mit pragma scheint doch zu funktionieren.
    Aber unter Tools -> Compiler Optoins -> Directories musst du den richtigen Pfad einstellen, unter dem die Lib zu finden ist, Vielleicht liegt das daran

    Super, danke, dass mit -ld3d9 hat bestens funktioniert! 👍



  • Jetzt wollte ich auch mal die D3DX Funktionen benutzen (z.B. um Texturen zu laden), und hab dann #include <d3dx9.h> gemacht und bei den Linker Parametern geschrieben: -ld3d9 d3dx9.lib ..

    Jetzt gibt mir Dev-C++ aber aus: E:\C++\3D\Makefile.win [Build Error] [test.exe] Error 1



  • Ein lib der Form libx.a bindet man mit -lx ein, wobei man für jede lib -l schreiben muss. wie das mit .lib Dateien geht, weis ich nicht, aber ich glaube, mal gelesen zu haben, dass man dann auch -lx verwenden muss. Aber keine Garantie. Kannst ja mal nach mingw oder g++/gcc und Lib einbinden suchen (Auch linux).



  • Ohh mann, stehts echt immer noch nicht in der FAQ?

    Bye, TGGC (Demo or Die)


Anmelden zum Antworten