OOP && DLL's

Unicate

Erfahrenes Mitglied
Hallo, ich habe mir ein paar Klassen geschrieben, ich würde diese gerne in einer DLL
haben und die Klassen aus der dll verwenden können.

Ich verwende Dev und dev erstellt mir beim anlegen eines dll-Projektes
folgendes:

dll.h:
Code:
#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


class DLLIMPORT DllClass
{
  public:
    DllClass();
    virtual ~DllClass(void);

  private:

};


#endif /* _DLL_H_ */

dll.cpp:
Code:
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>

DllClass::DllClass()
{

}


DllClass::~DllClass ()
{

}


BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
    switch (reason)
    {
      case DLL_PROCESS_ATTACH:
        break;

      case DLL_PROCESS_DETACH:
        break;

      case DLL_THREAD_ATTACH:
        break;

      case DLL_THREAD_DETACH:
        break;
    }

    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}

Wie erstelle ich daraus eine dll?

extern __declspec(dllexport) KlassenName
{
....
};

compile, fedisch geht net
 
Zuletzt bearbeitet:
Soweit ich weiss, kannst du Klassen aus DLLs nur so übernehmen, als dass du ein komplett abstraktes Interface übergibst.

Das Hauptprogramm braucht, um kompiliert zu werden, ja sonst den Code der Klasse. Der soll ja nur in der DLL vorhanden sein.
 
Öhm weiss jetzt auch ned ganz genau wsa du meinst, mit

extern __declspec(dllexport) KlassenName
{
....
};

um ne dll zu erstellen brauchste deinen DLL entrypoint, der ja im cpp file ist.

Und das is das was ich in der msdn gefunden habe:

Um alle öffentlichen Datenmember und Memberfunktionen einer Klasse zu exportieren, muss das Schlüsselwort, wie im nachfolgenden Beispiel dargestellt, links vom Klassennamen erscheinen:
class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };

Also kannste alle public sachen exportieren und nutzen. Ich hoffe allerdings das ist nicht visual C spezifisch. Kenn mich aber mit dev auch ned aus
 
Zurück