После прочтения большого количества информации об использовании плагинов, что означает использование объектов C ++ в динамически загружаемых общих библиотеках, результат был в основном: не делать.
- Особенно не используйте стандартные библиотеки-контейнеры или шаблоны вообще.
- Когда вы используете плагины с C ++, вы должны использовать один и тот же компилятор с теми же флагами и той же стандартной библиотекой.Даже тогда могут быть сбои.
Я сам создал простой загрузчик классов, который отлично работает, используя тот же компилятор, а плагины фактически компилируются в одном проекте.Что я делаю, так это регистрирую фабричные функции для моих классов, которые можно вызывать.Это работает довольно хорошо, и другие библиотеки, такие как Poco C ++, делают то же самое.
Мне интересно, как вы, люди, решаете проблему с совместимостью ABI через границы библиотек.Некоторые из вас могут сказать, что вообще не используйте плагины или придерживайтесь чисто Си-функций и типов.Я делаю это везде, где это возможно, но это C ++, и причина использования C ++ заключается в том, что он решает некоторые проблемы, которые неосуществимы в чистом C.
Я знаю, что по веским причинам, возможно, никогда не будет стандартного C ++ ABI.поэтому мне действительно интересно, как избежать проблем при использовании стандартной библиотеки и плагинов C ++.