Как построить независимую от компилятора библиотеку 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 ++ и исключительной безопасности.

1

Другие решения


По вопросам рекламы [email protected]