Exportieren von Konstruktoren in DLLs



  • Hallo,

    ich versuche mich gerade in DLLs einzuarbeiten. Wie ich Funktionen exportieren kann ist mir inzwischen klar. Doch nun quält mich die Frage, wie kann ich von außerhalb (evtl. ein C#-Prog.) einen Konstruktor einer Klasse innerhalb der DLL aufrufen.
    Durch den Code

    class __declspec(dllexport) CMyClass {
    public:
    	CMyClass(void);
    };
    

    sollte die Klasse "CMyClass" exportiert werden. Durch Betrachten der DLL im "Dependency Walker" ist der Konstruktor auch vorhanden, jedoch sehr kryptisch.
    Welche Möglichkeit habe ich nun auf diese Klassen zuzugreifen?

    Grüße jek



  • Hallo

    Standardisiert gar nicht. Gewöhnliche Windows-DLLs bieten auschließlich ein C-Interface, keine Klassen, keine Templates...
    Zwar ist es möglich auch Klassen zu ex/importieren, allerdings auf sicherer Basis ausschließlich von jeweils selbem C++ Compiler. Sogar verschiedene C++ Compiler gleichen Herstellers, aber verschiedener Versionen können in dieser Hinsicht zueinander inkompatibel sein.
    Entweder beschrängst du dich also auf ein reines C-Interfacer und kapselst die Klassen intern, oder du must Verfahren wie DOM (?) von Microsoft benutzen. Damit erzeugst du aber auch keine echten universellen DLLs mehr.
    Hast du dich jemals gefragt warum das Interface der WinAPI auch nach solanger Zeit immer noch auf C-Möglichkeiten beschrängt ist? Weil das der kleinste gemeinsamer Nenner aller Sprachen ist.

    bis bald
    akari



  • Sprach- und compilerübergreifende Exporte von Klassen aus DLLs sind AFAIK so nicht möglich. Du mußt dich entweder auf ein C-Interface beschränken oder andere Techniken wie z.B. COM benutzen.

    /edit: zu langsam, zu wenig. Ich werd alt 😞



  • Danke,
    für mich war die interne Kapselung der Klassen auch die naheliegendste Lösung.
    Bezüglich der Nutzung der COM-Technologie, kann mir da jemand ein Tutorial empfehlen (Erzeugung mit C++, Nutzung mit C#)?

    Grüße jek



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Bei Codeproject findet man wohl den besten Online-Einstieg in COM
    http://www.codeproject.com/com/


Anmelden zum Antworten