Klasse in DLL ?

Hallasas

Erfahrenes Mitglied
Hallo Community.

Ich versuche eine Klasse in eine DLL zu "packen". Wie mache ich das ?
Meine Klasse sieht etwa so aus:
C++:
class meineklasse
{
public:
   void Funktion1(LPCSTR lpInput);
//....
private:
   BOOL Showed;
}

void meineklasse::Funktion1(LPCSTR lpInput)
{
   MessageBox(NULL, lpInput, "Funktion1", MB_OK);
   this->Showed=true;
}
//....
Da ich mehrere Anwendungen habe, ist das Zugreifen via DLL die komfortabelste Möglichkeit.

Ich freue mich über eure Hilfe.
Gruß Hallasas
 
Zuletzt bearbeitet von einem Moderator:
Naja, eine DLL ist eigentlich nichts anderes als eine Klasse. Heißt also, je nachdem mit was du programmierst, musst du eine DLL erstellen. In die richtige DLL Datei deine Funktionen reinpacken und deine Klasse mit einbinden. Fertig.

Gruß
cesupa
 
Naja, eine DLL ist eigentlich nichts anderes als eine Klasse.
Kann man so pauschal eigentlich nicht sagen, da es verschiedene Typen von DLLs gibt.

Die "normalen" DLLs stellen nur Funktionen bereit. Das Exportieren ganzer Klassen ist ohne weiteres nicht möglich. Ensprechender Code muss in eine Standard-C Funktion gepackt werden, welche man dann exportieren kann.

COM-DLLs können Klassen bereitstellen, allerdings ist die Erstellung und Verwendung solcher DLLs mit deutlich mehr Aufwand als bei normalen DLLs verbunden.

Last not Least werden die Klassenbibliotheken bei .NET-Projekten auch als .DLL erstellt, mit welchen man dann aber in anderen Umgebungen überhaupt nix anfangen kann.

@Hallasas
Der einfachste Weg: Erstelle eine exportierbare C-Funktion, instanziere dort deine Klasse und rufe die gewünschte Methode auf.

Gruß
MCoder
 
Erstmal danke für die Antwort.
Aber ich habe das noch nicht so richtig verstanden...
Sollte das nun so aussehen ?
C++:
extern "C"
{
    class __declspec(dllexport) meineklasse
    {
        // ...
    }
}
Wenn ja, wie kann ich nun darauf zugreifen ?

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Nein, es geht nur sowas:
C++:
extern "C"
{
    void __declspec(dllexport) Funktion1(LPCSTR lpInput)
    {
        meineklasse mk;
        mk.Funktion1(lpInput);
    }
}
Wie gesagt, normale DLLs unterstützen nicht den Export von Klassen.

Gruß
MCoder
 
Zurück