Как я могу иметь один синглтон на dylib? - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь создать плагин VST (динамическую библиотеку c для звукового программного обеспечения), содержащую в себе синглтон (с использованием элемента stati c C ++). Проблема в том, что когда я пытаюсь загрузить более одного экземпляра плагина (то есть 2 копии dylib), члены stati c становятся общими, то есть 2 экземпляра dylib совместно используют один и тот же dylib. Существует ли механизм, который позволяет отключить совместное использование переменных stati c через границу dylib? например, поэтому каждый экземпляр одного и того же dylib имеет свои собственные синглтоны?

1 Ответ

0 голосов
/ 01 апреля 2020

Все известные мне динамические c библиотеки представляют собой один двоичный файл, один экземпляр которого загружается в память и используется несколькими процессами. Если в этом единственном экземпляре содержится одноэлементное значение, то все процессы, использующие эту общую библиотеку , увидят один и тот же одноэлементное значение. На самом деле вам нужен динамический набор этих объектов. Создайте один, когда процесс загружает библиотеку, и уничтожьте соответствующий, когда принцесса выгружает библиотеку.

...