Как создать и прочитать неглобальные переменные, которые не уничтожаются в конце функции? - PullRequest
1 голос
/ 06 января 2011

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

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

Ответы [ 3 ]

1 голос
/ 06 января 2011

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

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

0 голосов
/ 06 января 2011

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

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

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

0 голосов
/ 06 января 2011

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

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