单身和不同的库版本

时间:2017-11-20 21:16:43

标签: c++ singleton

我正在构建一个用于应用程序插件的库 这个图书馆包含一个单身人士(我知道单身人士在这里并不喜欢,如果有办法,我就不会使用它。)
现在,我的问题是:

如果使用不同版本的库构建了两个插件,会发生什么?

  • 如果单例类已更改,这只是一个问题吗?
    • 添加方法/删除方法/更改签名/实施更改
  • 或者它总是一个问题吗?

修改: 通过插件,我指的是在运行时加载的共享对象。基本上,应用程序允许使用具有已知基类的宏导出类,然后在加载包含插件类的库之后,用户可以实例化这些插件(导出的类)。 这些基类只定义了不同类型的插件。即影响交互,可视化等的插件

1 个答案:

答案 0 :(得分:1)

如果你的图书馆是静态的,那么不应该有任何问题,因为它是在插件的代码中复制的。

然而,动态库是从程序内部引用的。如果你使用的是一个插件,比如你的库的v1.1,加载插件的应用程序只知道版本1.0,你可能会遇到崩溃的奇怪的运行时行为。

最简单的方法是实现一些getVersion()功能,以便应用程序可以检查目标系统上是否安装了假定版本,如果不是这样,则可以使用早期版本。这一切都取决于您使用的功能以及更改的时间或方式。

但是回到你最初的问题:如果有两个使用不同版本的插件并不重要。如果其中一个插件使用未安装在目标上的版本,则很重要。(仅限动态库)