У меня создается впечатление, что по целому ряду причин небезопасно передавать стандартные объекты библиотеки (в частности, шаблонные) между модулями, когда они могут быть скомпилированы с различными версиями стандартной библиотеки или разных компиляторов. Моя цель теперь - найти жизнеспособное решение для этого, особенно в случае общих указателей и строк.Альтернативы передаче объектов между модулями
возможных решений, которые приходят на ум, включают в себя:
- C и другие примитивные типы, которые никогда не меняются (не представляется возможным, поскольку требуются более сложные типы)
- Виды из стандартизированной библиотеки, либо:
- Пользовательский вариант (который требует добавления строки и таких классов, что, честно говоря, звучит ужасно)
- Некоторая внешняя библиотека, которая уже предоставляет такие вещи (первая мысль - это Boost, но даже без раздувания т включает в себя, он кажется слишком шаблонами тяжело работать)
- Некоторое магическое обстоятельство фактически делает его безопасным (во всех случаях, но shared_ptr)
Реальная проблема, как представляется, такие вещи, как общие указатели, которые сильно зависят от шаблонов.
Вопрос о том, было ли задание пропущенных стандартных объектов библиотеки задано много раз, и в некоторых случаях всегда возвращается к тому, чтобы быть плохим веществом, но фактическое решение, которое не требует написания тонны кода, который уже сделан в десятки раз кажется редким.
Есть ли решение для этого, которое не связано с внедрением внутреннего подсчета ссылок и пользовательских строк, или это просто цена, которая должна быть заплачена за перекрестную версию/безопасность компилятора/платформы?
Что такое «модуль»? –
@CatPlusPlus Для проекта я сейчас работаю, прежде всего EXE/DLL/HDR (Win32 PE). Но проблема существует для всех, включая ELF PE, SO, DYLIB и т. Д. (Надеюсь, решение тоже). – ssube
Стандартная библиотека STL или C++? –