DLL mit Schnittstellenfunktion



  • Ich möchte eine DLL erzeugen, die eine Schnittstellenfunktion exportiert, die einen Zeiger auf ein Objekt liefert. Hat jemand einen Tip oder ein kleines Beispiel?



  • #define MY_DLL_API __declspec(dllexport)
    
    class IMyClass {
    pulbic:
        virtual void Method1()   = 0;
        virtual void Method2()   = 0;
    }
    
    MY_DLL_API IMyClass *CreateMyObject();
    

    In der Dll leitest du dann ne Klasse von IMyClass ab in der du den code implementierst. 😉



  • Danke für den Tip! Ich bin bloß noch nicht drauf gekommen, wie ich dann in der Anwendung auf die Funktionen zugreife. Wäre schön, wenn mir das noch jemand erklären könnte.



  • MyDLL.h

    #ifdef MY_DLL_EXPORTS
    #define MY_DLL_API __declspec(dllexport)
    #else
    #define MY_DLL_API __declspec(dllimport)
    #endif
    
    class IMyClass {
    public:
        virtual void Method1()   = 0;
        virtual void Method2()   = 0;
    }
    
    MY_DLL_API IMyClass *CreateMyObject();  
    MY_DLL_API void DeleteMyObject(IMyClass *pClass);
    

    MyDLL.cpp

    #define MY_DLL_EXPORTS // DLL code - wir exportieren die funktionen
    #include "MyDLL.h"
    
    // die implementation der klasse
    class CMyClass : public IMyClass
    {
    public:
       void Method1() {
          // blabla
       }
       void Method2() {
          // blabla
       }
    }
    
    // die exportierten funktionen
    IMyClass *CreateMyObject()
    {
       return new CMyClass();
    }
    void DeleteMyObject(IMyClass *pClass)
    {
       delete pClass;
    }
    

    MyDLL.def

    EXPORTS
       CreateMyObject
       DeleteMyObject
    

    MyProgram.cpp

    #include "MyDLL.h" // diesmal ohne #define MY_DLL_EXPORTS
    
    //...
    IMyClass *pObj = CreateMyObject();
    pObj->Method1();
    DeleteMyObject(pObj);
    //...
    


  • ich danke auch 🙂
    schön kurz und bündig. habe selber gerade schon vergessen gehabt, wie das gehen soll.


Anmelden zum Antworten