2011-01-06 10 views
1

Ich versuche einige Plugins zu programmieren, um sie mit MIDI-Sequenzern zu verwenden, habe aber einen Stolperstein gefunden. Ich kann keine global-scope-Variablen zum Speichern von Informationen verwenden, da mehrere Instanzen der .dll vorhanden sein können, die Speicher gemeinsam nutzen.Wie erstelle und lese ich nicht-globale Variablen, die am Ende der Funktion nicht zerstört werden?

Wie erstelle ich eine Klasse (zur Wiederverwendbarkeit in anderen Plugins), die zweidimensionales Array und andere Variablen enthält, deren Inhalt zwischen Funktionen aufgeteilt werden soll? Wenn das möglich ist, wie würde ich die Daten von der Funktion in dem Framework, in dem ich die Verarbeitung mache, lesen und schreiben?

Antwort

0

Suchen Sie nach dem Schlüsselwort static?

static int i = 1; //this keeps its value at each call 
1

Was meinen Sie mit "mehrere Instanzen der DLL"? In Win32 hat jeder Prozess seinen eigenen privaten Adressraum und DLLs mit globalen Variablen sind spezifisch für diesen Prozess Prozess. Eine DLL kann nicht mehr als einmal in denselben Prozess geladen werden.

In den schlechten alten Tagen von Win16, DLL globalen Variablenraum wurde zwischen den Prozessen geteilt, was zu einem Ende der Kopfschmerzen geführt.

+0

Ja, tut mir leid, ich hätte konkreter sein sollen. Ressourcen werden absichtlich mit diesem Framework geteilt, um zu vermeiden, dass häufig genutzte Elemente wie GUI-Elemente erneut geladen werden. –

0

Es stellt sich heraus, dass es eine C++ virgin Fehler war, wo ich Husten nur notwendig, um die Variablen zu erklären, benötigt in der Husten Klassendeklaration der Plugin-Klasse.

Danke allen für die Hilfe. Vielleicht bin ich zurück mit Fragen darüber, wie man Informationen aus Klassen bekommt, die alle möglichen verrückten Zeiger und Argumente enthalten.

Bleiben Sie dran! :)

Verwandte Themen