Meine 3D-Engine(C++).Hilfe!



  • Hallo Zusammen.
    Ich habe angefangen meine 3DE-Engine zu programmieren:

    Ich habe ein Projekt einer Statischen Bibliothek erstellt.

    Darin sind bis jetzt:
    main.cpp
    D3D9.h

    in D3D9.h habe ich geschrieben:

    namespace fenster;
    {
    void öffnefenster(void)
    {
    //code zum öffnen eines Fensters
    }
    }

    in main.cpp:

    #include <d3d9.h>
    #include <window.h>

    //Ressourcen
    #include <D3D9.h>

    In einem späteren Projekt müsste man dann nur die Statische Bibliothek verlinken und dann schreiben:

    using namespace fenster;
    {
    öffnefenster()
    }

    Funktioniert das?
    Bin jetzt weg und erts neute nachmittag bis avend wieder da.
    Hoffe auf antworten:



  • es ist wie mit std (std ist auch nen namespace)

    also

    fenster::öffnefenster();
    

    Oder was genau hast du vor ?
    Wenn es nur Aufrufen ist dann das oben.



  • Wenn die Bibliothek statisch ist, dann erzeugt sie eine LIB. Diese LIB musst Du in Projekt2 einbinden, das geht z.B. über die Projekteigenschaften in MSVC. Oder man nimmt ein #pragma.

    Bei einer DLL braucht man noch declspec import/export (MSVC), man muss da also sagen: Hey, exportiere bitte dies und das in die DLL bzw. bei der Benutzung "Das hier findet man in der DLL", aber du nutzt hast ja eine statische Bibliothek, also ist das, glaube ich, nicht nötig.



  • ...



  • Wieso pocht der so auf OS? GPL schließt Weiterverwendung bei geschlossenem Code doch (normalerweise) aus. Und man kann auch Nicht-OS-Bibliotheken oft nutzen, um das Rad nicht neu zu erfinden.

    Aber grundsätzlich hat er natürlich Recht.



  • Also mir ging es eigentlich hauptsächlich darum,ob es so funktionieren würde in einem Projekt,in dem man diese Engine benutzt,die Befehle so aufrufen könnte.

    Also nur:

    öffnefenster()

    Und ob man die Funktionen so definieren kann:

    void öffnefenster(void)
    {
    //Code zum öffnen eines Fensters
    }



  • Wie wärs du lernst erstmal die Sprache bevor du eine Engine schreibst.



  • Kann man, aber ö geht nicht und (void) schreibt man einfach ().

    Und Skym0sh0 hat Recht, denn Du wirst vermutlich ohne gründliches Lernen der Sprache beim Schreiben der Engine verzweifeln, C++ kann man nicht so gut durch learning by doing (ohne Theorie) lernen, da kann man einfach zu viele Details falsch machen, die einem das Genick brechen. 🙂



  • ok muss zugeben bin noch einigermaßen neu in c++,aber lese auch Bücher um c++ besser zu lernen. vor c++ hab ich in basic programmiert,aber die Sprache ist nicht so gut.



  • Solange Du kein Buch von Jürgen Wolf liest, ist das okay. Sieh nur zu, dass Du auch wirklich weiter C++ lernst und das nicht irgendwann links liegen lässt, weil es viel interessanter ist Shader zu schreiben. 😉



  • Keine Sorge.
    Programmieren macht find ich auch Spass.
    Und ich werd auch bei c++ bleiben,da ich da jetzt schon drinnen bin.
    Wenn auch nur am Anfang.


Anmelden zum Antworten