Entry tags:
- c,
- cpp,
- gcc,
- програмування
C++ plugin infrastructure and type safety - 2
Для початку коротко підсумую висновки зроблені у попередньому пості.
- C++ не надає ніяких механізмів динамічного завантаження коду;
- Динамічне завантаження коду можливе у мові C;
- Для створення екземплярів плаганів використовуються функції-фабрики, а для уравління - абстрактний інтерфейс;
- Щоб уникнути name mangling функція-фабрика помічається як export "C", при цьому цілком і повністю втрачається інформація про тип функції;
- Доступ до функції можливий тільки через reinterpret_cast із void *.
Усе це в купі означає що за такого підходу ні про яку type safety і мови бути не може. Виходу немає?
Вихід є! У C++ можливо реалізувати систему плагінів на базі динамічно завантажуваних бібліотек і при цьому настільки типобезпечну, на скільки це взагалі можливо у C++! Як же цього добитись?
( Read more... )