Как построить независимую от компилятора библиотеку C++ (для Solaris Studio и gcc)?

Я хотел бы расширить мою библиотеку, которая в настоящее время компилируется только с использованием gcc, для использования в Solaris Studio.

Моя идея состоит в том, чтобы сделать следующее:

  1. Напишите функции-оболочки в C, которые предоставляют соответствующие части интерфейса с внешней связью C.
  2. Затем создайте эту библиотеку, используя gcc. Результирующий c-заголовок и двоичный файл не зависят от компилятора, так как больше нет искажения имен.
  3. Включите c-header и ссылку в проект, скомпилированный с помощью Solaris Studio.

Вопрос: это выполнимый подход или есть лучшее решение этой проблемы?


Примечание. Помимо искажения имен, также следует следить за проблемами, связанными с обработкой исключений.

1 ответ

Решение

Ваш план верен.

Пока ваша библиотека предоставляет C API, совместимый с платформой ABI (размеры и выравнивание типов C, соглашения о вызовах) и не генерирует исключения C++, у вас не возникнет проблем при связывании вашей библиотеки с использованием других компиляторов или языков.

Вы также можете добавить оболочку только для заголовка C++ для вашего C API, чтобы сделать ее легко пригодной для повторного использования из C++ и исключительной безопасности.

Другие вопросы по тегам