每个dylib如何拥有一个单例?

问题描述 投票:-1回答:1

我正在尝试制作一个VST插件(用于音频软件的动态库),并在其中添加一个单例(使用静态C ++成员)。问题是,当我尝试加载多个插件实例(即dylib的2个副本)时,静态成员会共享,即dylib的2个实例共享相同的dylib。是否有一种机制可以让您禁止在dylib边界上共享静态变量?例如所以同一个dylib的每个实例都有自己的单例?

c++ xcode dll clang vst
1个回答
0
投票

我知道的所有动态库都是单个二进制文件,其单个实例被加载到内存中并由多个进程使用。如果单个实例中有一个单例,则使用该shared library的所有进程将看到相同的单例。您真正想要的是这些对象的动态集合。在进程加载库时创建一个,并在公主卸载库时销毁相应的一个。

© www.soinside.com 2019 - 2024. All rights reserved.