Eigener Handle für c++ DLL



  • Hi,

    da ich eine selbstgeschriebene DLL (in c++) auch unter anderen Sprachen nutzen muss (aufgabe im rahmen einer ausbildung) habe ich hier ein kleines problem!

    in meiner dll habe ich eine klasse die gewisse funktionen innehat

    class A
    {
      private:
        int myInt;
      public: 
        A(void) { this->myInt=5 }
        int GetInt() { return this->myInt }
    };
    

    so, da das ganze ja durch eine C schnittstelle genutzt werden muss um es dann in delphi und co. verwenden zu können hörte ich, dass das über einen eigenen handle funktionieren soll (die klasse selbst kann ich ja nich exportieren, da unter c unbekannt.

    also hab ich eine dll.h in der eine C funktion steht und ein handle

    // mydll.h
    #ifdef MYDLL_EXPORTS
        #define MYDLL extern "C" __declspec(dllexport)
    #else
        #define MYDLL extern "C" __declspec(dllimport)
    #endif
    
    typedef struct tagA_Handle {}*	A_Handle;
    
    MYDLL A_Handle GetInstanceOfA();
    

    so in der dazugehörigen cpp in der dll steht dann

    // mydll.cpp
    #include "mydll.h"
    MYDLL A_Handle KL_GetRootLogger()
    {
    	return ((A_Handle ) ( new A() ));
    }
    

    jetzt ist die frage, wie kann ich in meiner externen anweisung nun auf die funktionen der A-Instanz unter dem handle zuweisen ... die adressen sind richtig zugewiesen, sprich das handle zeigt auch auf eine instanz von a.

    //main.cpp
    A_Handle handleTest = GetInstanceOfA();
    
    //so und ab jetzt bin ich überfragt ...
    


  • ok hat sich erledigt geht per reinterpret_cast


Anmelden zum Antworten