我的应用程序有一个插件系统,允许我的用户编写自己的插件,这些插件在运行时加载.通常这很好,但在某些情况下,两个插件使用相同的库,这将导致这两个插件之间的冲突.
例:
插件A想要使用TouchJSON来处理JSON,因此创建者将TouchJSON代码添加到插件源中,并将其编译并链接到插件二进制文件中.后来插件B也希望使用相同的库并完全相同.现在,当我的应用程序加载这两个不同的插件时,它会检测到这个并发出如下警告:
类CJSONScanner在[path_to_plugin_a]和[path_to_plugin_b]中实现.将使用两者之一.哪一个未定义.
由于我的应用程序只是加载插件并确保它们符合某个协议,我无法控制加载哪些插件以及两个或多个插件使用相同的库.
只要两个插件使用完全相同的库版本,这可能会起作用,但只要API在一个插件中发生更改,就会出现一堆问题.
我能做些什么吗?