gemeinsam genutze Variable in DLL



  • Hallo zusammen,

    wenn mehrere Programme eine DLL nutzen, ist die Verwaltung der DLL-Variablen ja noramlerweise getrennt (in eigenen Instanzen), so dass sie für jedes aufrufende Programm eigene Werte besitzen.

    Ich möchte nun, dass eine DLL-Variable für alle Programme gemeinsam genutzt wird (also praktisch shared ist). Geht das nur über eine separate Erzeugung eines Shared Memory oder gibt es da auch noch andere Möglichkeiten, z.B. bei der Deklaration?

    Desweiteren habe ich gelesen, dass es einen sogenannten Instanzenzähler für die DLL gibt. Wie kann man den abfragen?

    Ich arbeite momentan mit dem Visual Studio 2007.

    Vielen Dank für die Unterstützung schon mal im Voraus!
    Wes 🙂



  • #pragma data_seg



  • Danke, der Hinweis war das, was mir gefehlt hatte. Hier die genauen Angaben:

    #pragma data_seg ("shared")
    int wert = 0;
    #pragma data_seg()
    #pragma comment(linker,"/SECTION:shared,RWS")
    


  • Cool, die Section hab' ich bis jetzt immer über ein .DEF File definiert 🙂
    So gehts einfacher...



  • Sorry für die Nachfrage, aber wie kann ich denn nun den Instanzenzähler einer DLL bestimmen?

    Nehme mal an, dass das über die Variable innerhalb des #pragma data_seg geschieht, oder?

    Wenn ich diese aber als eigenen Instanzenzähler verwenden will, muss ich dann den lesenden und schreibenden Zugriff darauf selbst sysnchronisieren (mit Semaphoren o.ä.)?

    Gibt es keine Möglichkeit unter Windows den aktuellen Wert des DLL Instanzzählers in der DLL selbst auszulesen?

    Ciao


Anmelden zum Antworten