Предположим, у меня есть два проекта, которые я хотел бы связать вместе:
- Библиотека С++, скомпилированная с Visual С++ в DLL файл.
- С++ исполняемый файл, скомпилированный с С++ Builder, который использует классы в библиотеке.
Я понимаю, что нет стандартного С++ ABI и что любые попытки напрямую связать эти два проекта на С++ не удастся. Что такое хороший автоматический способ создания уровня совместимости, который позволяет мне выполнить это?
Например, предположительно, библиотека С++ может открываться через интерфейс C. Тогда исполняемый файл будет иметь некоторые классы С++, которые переносят интерфейс C, открытый библиотекой С++. Поскольку существует стандартный ABI для C, он будет работать.
Вопрос только в том, как автоматически создавать интерфейсы C и С++ - ручное сохранение этого не было бы вариантом. Проект SWIG выглядит многообещающим, но, к сожалению, С++ не является одним из выходов SWIG, перечисленных на их веб-сайте. Есть ли способ сделать то, что я хочу, с помощью SWIG? Или есть другой проект, кроме SWIG, который поможет мне в этой задаче?
Или я об этом ошибаюсь?
Изменить: Основная библиотека С++ предназначена для кросс-платформенной. Очевидно, что исполняемый файл относится к Windows. Я не хочу загрязнять основную библиотеку настолько, что ее невозможно скомпилировать на других платформах.