Динамическое использование разных версий OpenSSL в одном приложении на основе некоторого флага - PullRequest
0 голосов
/ 28 мая 2020

Необходимо скомпилировать одно приложение с двумя версиями разделяемой библиотеки / DLL OpenSSL. Версия 1.0.2 и версия 1.1.1. Версия 1.1.1 не поддерживает FIPS. Поэтому для поддержки федеральных заказчиков мы хотим продолжать использовать версию 1.0.2. Для клиентов, не относящихся к FIPS, рекомендуется использовать версию 1.1.1, в которой будет много исправлений безопасности.

Таким образом, будет добавлено, удалено или изменена подпись многих API. Будет много структур, добавленных / удаленных или измененных перечислений. Для работы с API мы планируем динамически загружать библиотеки с помощью LoadLibrary / dlopen на основе флага FIPS и вызывать функции через указатели на функции, полученные с помощью GetProcAddress / dlsym.

Проблема со структурами / перечислениями / определениями. Чтобы использовать их, мы должны включить файлы заголовков. Заголовочные файлы обеих версий будут иметь одинаковое имя, некоторые общие объявления. Поэтому мы не можем включить 2 таких файла заголовков в один файл CPP.

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

Заранее спасибо

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