2011-01-06 3 views
1

Я пытаюсь закодировать некоторые плагины для использования с MIDI-секвенсорами, но попал в камнем преткновения. Я не могу использовать глобальные переменные для хранения информации, поскольку могут существовать несколько экземпляров .dll, которые делят память.Как создать и прочитать неглобальные переменные, которые не были уничтожены в конце функции?

Как создать класс (для целей повторного использования в других плагинах), содержащий 2-мерный массив и другие переменные, содержимое которых должно делиться между функциями? Если это возможно, как бы я мог читать и записывать данные из функции в рамках, где выполняю обработку?

ответ

0

Вы ищете ключевое слово static?

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

Что вы подразумеваете под «несколькими экземплярами DLL»? В Win32 каждый процесс имеет собственное личное адресное пространство, а библиотеки DLL с глобальными переменными относятся к этому процессу . DLL нельзя загружать более одного раза в один и тот же процесс.

В плохие старые дни Win16 глобальное переменное пространство DLL было разделено между процессами, что не приводило к окончанию головных болей.

+0

Да, извините, я должен был быть более конкретным. Ресурсы намеренно разделяются с этой структурой, чтобы избежать повторной загрузки обычно общих вещей, таких как элементы GUI. –

0

Оказывается, что это C++ девственница ошибка, где я кашель просто необходимо объявить переменные, необходимые в кашле класса декларации класса плагина.

Спасибо всем за помощь. Возможно, я вернусь с вопросами о том, как получить информацию от классов, в качестве аргументов которых есть всевозможные штучные аргументы.

Оставайтесь на связи! :)