В моем приложении есть система плагинов, которая позволяет моим пользователям писать свои собственные плагины, которые загружаются во время выполнения. Обычно это нормально, но в некоторых случаях два плагина используют одни и те же библиотеки, которые вызывают конфликт между этими двумя.
Пример:
Плагин A хочет использовать TouchJSON для работы с JSON и, таким образом, создатель добавляет код TouchJSON в исходный код плагина, и он компилируется и связывается с двоичным файлом плагина. Позже Плагин B также хочет использовать ту же библиотеку и делает то же самое. Теперь, когда мое приложение загружает эти два разных плагина, оно обнаруживает это и выдает предупреждение вроде этого:
Класс CJSONScanner реализован в оба [path_to_plugin_a] и [путь_к_плагину_b]. Один из двух будет использоваться. Какой из них не определен.
Поскольку мое приложение просто загружает плагины и проверяет их соответствие определенному протоколу, я не могу контролировать, какие плагины загружаются, и если два или более используют одну и ту же библиотеку.
Пока оба плагина используют одну и ту же версию библиотеки это, вероятно, сработает, но как только API изменится в одном плагине, возникнет куча проблем.
Что я могу с этим сделать?