Klasse aus dll importieren



  • Gibts die Möglichkeit eine Klasse aus eine explizit eingebundene DLL zu importieren?

    Funktionen ist kein Problem!
    Klassen auch nicht, aber nur wenn implizit...

    Danke schon mal im Voraus...



  • nur mal als Ergänzung,

    mit Explizit meine ich dass ich versuche die Klasse per ::LoadLibrary und ::GetProcAdress zu holen...

    Funktionen so zu holen ist überhaupt kein Problem...



  • Das wird m.E. nicht so gehen.

    Ich benutze bei meinen DLLs immer bei der Deklaration immer das Makro "AFX_EXT_CLASS".
    Dann kann man es über den entsprechenden Header der DLL nutzen.

    Du willst aber eine Klasse der FremdDLL nutzen?
    Was ist das für eine DLL? Wenn sie die Funktionen nur exportiert, dann hast Du keine Möglichkeit an eine Klasse zu kommen, außer Du schreibst Dir selber eine, die dann wiederrum die Funktionen lädt. Ohne Kapselung wirst Du da nix.



  • Du kannst Zeiger auf Instanzen per Funktion in der DLL rausgeben und dann damit im Hauptprogramm arbeiten.
    Dann müssen aber exe und dll mit dem selben Compiler erstellt worden sein. Probleme kanns auch bei der C-Runtime geben. Da ist das einfachst, dann als Multithreaded DLL zu kompilieren.
    An der Sache hängt natürlich dann auch die Problematik der Lebensdauer, weil du die Instanzen in der DLL dann wahrscheinlich wohl mit new anlegen wirst. Wäre also evtl ein Fall für Smart Pointer.


Anmelden zum Antworten