unbekannte Funktionen in statischer Bibliothek verwenden MinGW



  • Hallo,

    ich habe da mal eine Frage, denn ich weis nicht wie ich es machen soll.

    1. ich besitze eine kommerzielle 3DEngine welche ich statisch dazu linke mit MinGW über CodeBlocks IDE. Kein C++11.

    2. ich möchte eine weitere externe statische Bibliothek erstellen, welche Funktionen aus dieser 3DEngine verwendet.
    Diese Lib soll auch zum Hauptprogramm dazu gelinkt werden, soll aber natürlich beim erstellen jetzt nicht auch die 3DEngine beinhalten.

    Sagen wir mal die 3DEngine hätte den Befehl:
    void MoveMeshObject( Handle myMesh, float x,float y,float z)

    disen kann ich in meinem Hauptprogramm so verwenden:
    MoveMeshObject( Player , 0, 0, 0.25 )

    vorher muss ich ich die Bibliothek über eine Header Datei bekannt machen.
    #include "Pfad\3dEngineHeader.h"

    Ich linke dazu
    3dengine.h.devcpp.lib

    Nun möchte ich gerne die Funktion MoveMeshObject() in einer externen statischen Bibliothek und evtl. auch in einer DLL verwenden.
    Diese externe Lib soll dann wieder in einem Programm verwendet werden welche die
    Funktionen der 3DEngine kennt und am Schluss wird sie dazu gelinkt.

    Kann ich die Befehle aus der 3DEngine benutzen ohne sie zu der zu erstellenden Bibliothek vorab dazu zu linken?
    Wie muss ich die Befehle aus der Engine bekannt machen?

    Kompiliervorgang:

    statische Lib ohne Engine aber mit Befehlen derselben ---> meineLib.lib (linken zur Lib?)

    MeinHauptProgramm ---> kompilieren

    in C::B dann 3DEngine und meineLib.lib dazu linken.

    Gruß



  • Kopfkratz schrieb:

    Kann ich die Befehle aus der 3DEngine benutzen ohne sie zu der zu erstellenden Bibliothek vorab dazu zu linken?

    In einer statischen lib schon, wenn die später zusammen mit der Engine zu einer exe gelinked wird. Eine dll dagegen wird zu einem separaten Modul und muss die Engine selbst linken. Beachte, dass die dll dann auch ihre eigene "Instanz" der Engine lib hat, also irgendwelcher globaler State der Engine lib wird nicht zwischen exe und dll geshared werden, sofern in dieser Engine lib da nicht spezielle Maßnahmen ergriffen wurden, um das zu ermöglichen...

    Kopfkratz schrieb:

    Wie muss ich die Befehle aus der Engine bekannt machen?

    Header inkludieren?



  • Gut, dann nur statische Lib zum linken.

    Muss mich da noch mal belesen, C::B erstellt mir da nur ein .c file
    im Projekt Template.

    Habe vor Jahren mal eine DLL probeweise erstellt, eine statische Lib noch nie, aber Google wird's wissen, danke erstmal.


Anmelden zum Antworten