Fragen zu DLL



  • Hi,

    ich bin dabei, eine MFC-DLL zu schreiben, die von einer Nicht-C++-Anwendung verwendet werden soll. Sie exportiert nur eine Funktion, die ein Dialogfeld startet. In diesem kann man dann Eingaben machen und das Ergebnis soll an die Hauptanwendung zurückgegeben werden.
    Die DLL wird statisch gelinkt.

    Nun zu den Fragen:

    1. Der Rückgabewert ist CString. Kommt eine Nicht-C++-Anwendung damit klar? Wenn nicht, was währe eine Alternative?

    2. Mir ist aufgefallen, wenn man die DLL-Funktion aufruft und die Variablen belegt und die DLL beendet und wieder aufruft, sind die Variablen noch belegt (globale Variablen in der DLL). Sind das nur zufällige überreste im Speicher oder ist das beabsichtigt und die Variablen sind auch in der Hauptanwendung global?

    Gruß
    Grischi



  • Zu 1.
    Eine Nicht-C++-Anwendung kommt nicht damit klar.
    Alternative: Siehe API-Aufrufe mit Strings!

    Zu 2.
    Globale Variablen sind globale Variablen. Beim Linken der DLL zur Anwendung wird diese Variable an den Anwendungsspeicher angefügt, ist somit auch in der Hauptanwendung global.



  • Zu 2.

    Wenn du die dll statisch linkst dann kannst du die dll nicht beenden da sie beim Programmstart automatisch geladen wird und sich somit sollange das Hauptprogramm läuft im Speicher befindet.
    Startest du die hauptapplikation 2 mal und beendest eine dann ist die dll immer noch geladen bis alles Programm egschlossen werden welche diese benutzen.


Anmelden zum Antworten