Klassen in DLL's



  • Hi,

    kann mir jemand mal erklären wie ich eine Klasse in einer DLL verpacken kann und diese dann in einem Programm instanzieren kann? 🤡
    Ein paar Code-Schnippsel währen auch nett. 😋



  • dev-cpp template

    //dll.h
    #ifndef DLL_H
    #define DLL_H
    
    #if BUILDING_DLL // beim erstellen der dll mit definen
        #define DLLIMPORT __declspec(dllexport)
    #else
        #define DLLIMPORT __declspec(dllimport)
    #endif
    
    class DLLIMPORT DllClass
    {
      public:
        DllClass();
        ~DllClass(void);
    };
    #endif /* _DLL_H_ */
    
    // cpp sollte klar sein
    

    programm
    - dll.h includieren
    - dann einfach verwenden wie du sie brauchst



  • Informier dich lieber über das Component Object Model (COM).



  • Gibts keine Möglichkeit ohne die Header der Klasse?
    So muss ich ja zu einer DLL immer die Header mitliefern, es gibt doch aber auch DLL die man einbinden kann ohne eine Headerdatei zu haben, oder irre ich mich da?



  • Chris0815 schrieb:

    Gibts keine Möglichkeit ohne die Header der Klasse?
    So muss ich ja zu einer DLL immer die Header mitliefern, es gibt doch aber auch DLL die man einbinden kann ohne eine Headerdatei zu haben, oder irre ich mich da?

    lol



  • Danke, sehr aufschlusssreich



  • Ich hab die Dll.h eingebunden, IntelliSense funktioniert und bekomme trotzdem folgende Fehlermeldung:

    xxx.cpp(39) : error C2065: 'DllClass': nichtdeklarierter Bezeichner



  • Eine DLL ohne Header-Datei einbinden geht auch. Allerdings musst Du dazu wissen, wie die DLL aufgebaut ist, d.h. welche Funktionen dort drin exportiert werden. Wenn Du das weißt kannst Du mit "LoadLibrary()' (genauere Beschreibung schau in Windowsdoku nach) auf einzelne Funktionen der DLL zugreifen und diese ausführen. Ob diese Zugriffsmethode auch auf exportierte Klassen anwendbar ist weiß ich nicht, aber ich bezweifle es. Außerdem ist diese Art des Zugriffs ziemlich umständlich. Der Vorteil dabei ist, dass die DLL erst nachgeladen wird, wenn eine Fnktion darauf aufgerufen wird.

    Bevorzugter Zugriff auf eine DLL für einen Programmierer ist das Einbinden der HeaderDatei(en). Alleine das reicht aber noch nicht. Zusätzlich musst Du (was am einfachsten ist), die .LIB Datei der DLL (wird beim compilieren der DLL erzeugt) in deinem Projekt einbeziehen. Die sorg dann dafür, dass die DLL beim starten des Programms dynamisch zugelinkt werden kann. >Den Pfad zur .LIB Datei kannst Du im Visual Studio unter "Projekt"->"Eigenschaften"->Karteireiter "Linker" angeben.


Anmelden zum Antworten