Klassen in DLL und ihre Verwendung



  • Also ich kann nur davon abraten Klassen via LoadLibrary zu verwenden...

    Basiert nicht das Component Object Model auf Klassen in DLLs?



  • com schrieb:

    Also ich kann nur davon abraten Klassen via LoadLibrary zu verwenden...

    Basiert nicht das Component Object Model auf Klassen in DLLs?

    So isses 👍



  • Also, ich hab das jetzt soweit geregelt. Zum Thema mit virtuellen Methoden: Bei mir treten da keine Probleme auf.

    Ich erzeuge ja eine Instanz

    CAnimal* pAnimal = GetRabbit();
    

    GetRabbit liefert ein CRabbit* Objekt! Das klappt.
    Über

    pAnimal->Eat();
    

    rufe ich die Methode CRabbit::Eat() auf! Da gibt es keine Probleme, klappt also auch ohne Probleme.

    Mein eigentliches Problem habe ich jetzt über inline Funktionen geregelt, die einfach die Funktionen der DLL aufrufen, die jetzt allerdings, um Namenskonflikte zu vermeiden (Mit extern "C"... wird die Funktionssignatur ja bis auf den Namen gekürtzt) etwas kryptisch aussehen (z.B. GetRabbit_1P_string). Wenn man aber diese "API" hat, ist der Komfort im eigentliches Programm sehr hoch.

    Falls ich das mit den virtuellen Methoden falsch verstanden habe, bitte aufklären 😃



  • com schrieb:

    Basiert nicht das Component Object Model auf Klassen in DLLs?

    COM hat mit Klassen in DLLs nichts zu tun.



  • plusman schrieb:

    Also, ich hab das jetzt soweit geregelt. Zum Thema mit virtuellen Methoden: Bei mir treten da keine Probleme auf.

    Wenn bei Dir keine Probleme auftreten, heisst es noch lange nicht, das es nicht prinzipiell Problematisch ist.



  • Jochen Kalmbach schrieb:

    com schrieb:

    Basiert nicht das Component Object Model auf Klassen in DLLs?

    COM hat mit Klassen in DLLs nichts zu tun.

    Ok das COM ist ja nicht auf C++ beschränkt. Aber in C++ hat man halt Klassen in DLLs und da gibt es doch auch keine Probleme?!



  • com schrieb:

    Aber in C++ hat man halt Klassen in DLLs und da gibt es doch auch keine Probleme?!

    Natürlich gibt es da keine Probleme; aber nur wenn Du gegen die LIB linkst.
    Mit COM hat das ganze aber nix zu tun.



  • Hm ich dachte dort wird in der Registry nachgeguckt und dann die passende DLL dynamisch per LoadLibrary geladen.



  • com schrieb:

    Hm ich dachte dort wird in der Registry nachgeguckt und dann die passende DLL dynamisch per LoadLibrary geladen.

    Aber in der DLL gibt es nur zwei C-Funktionen, welche von COM verwendet werden. Da gibt es direkt keine Klassen...



  • plusman hats doch aber auch so gemacht das er eine C-Funktion hat die dann die Objekte erstellt. Also die GetAnimal und GetRabbit sind doch eigentlich das gleiche wie DllGetClassObject. Ich sehe den Unterschied nicht.


Anmelden zum Antworten