有一组插件的一个应用程序,所有链接到一个共同的基础库。基础库定义了一个单例,它维护着每个插件中所有对象构造函数的列表。我如何创建共享库的具体实例单
在windows上,我可以创建这个基本库作为一个静态库,因此单例的副本放置在每个插件中。 但是在Linux上我有一点相反的问题as this fellow.
我已经试过到目前为止以下内容:
- 建基地作为共享库(按照原作者)
- 建基地作为静态与-fPIC
- 建基地与-fPIC为静态,明确的CMake删除-rdynamic
我真的想保持程序结构与现在一样,通过让singleton定义驻留在基本库内部,让每个插件拥有自己的实例。我已经尝试将定义移到每个插件中,但我真的很想避免这种情况。 本质上我想重现他认为的一个错误。但是他完全定义在一个头文件,它是有道理的,我认为每个插件会再有它自己的类的实例化他的单,我就另一方面也要编入基础库单身的定义。
另一个机会是[使用可见性编译指示](https://gcc.gnu.org/onlinedocs/gcc/Visibility-Pragmas.html)。 – yugr
谢谢你的回应,我会在接下来的几天里进行测试,并确认这是否适合我的工作。 –
经过测试和验证,这适用于我想要做的事。非常感谢。 –