Использование системы плагинов с объектами C ++ и контейнерами стандартной библиотеки - PullRequest
0 голосов
/ 19 октября 2018

После прочтения большого количества информации об использовании плагинов, что означает использование объектов C ++ в динамически загружаемых общих библиотеках, результат был в основном: не делать.

  1. Особенно не используйте стандартные библиотеки-контейнеры или шаблоны вообще.
  2. Когда вы используете плагины с C ++, вы должны использовать один и тот же компилятор с теми же флагами и той же стандартной библиотекой.Даже тогда могут быть сбои.

Я сам создал простой загрузчик классов, который отлично работает, используя тот же компилятор, а плагины фактически компилируются в одном проекте.Что я делаю, так это регистрирую фабричные функции для моих классов, которые можно вызывать.Это работает довольно хорошо, и другие библиотеки, такие как Poco C ++, делают то же самое.

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

Я знаю, что по веским причинам, возможно, никогда не будет стандартного C ++ ABI.поэтому мне действительно интересно, как избежать проблем при использовании стандартной библиотеки и плагинов C ++.

1 Ответ

0 голосов
/ 19 октября 2018

«Мне интересно, как вы, люди, решаете проблему с совместимостью ABI через границы библиотек» - мы стараемся каждый раз создавать все зависимости / библиотеки, а также исполняемый файл с нуля с помощью одного и того же компилятора.По крайней мере, это то, что I делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...