Mieszanie kodu C ++ z różnych kompilatorów

Załóżmy, że mam dwa projekty, które chciałbym połączyć razem:

Biblioteka C ++ skompilowana z Visual C ++ do pliku DLL.Plik wykonywalny C ++ skompilowany przy użyciu C ++ Builder, który używa klas w bibliotece.

Zdaję sobie sprawę, że nie ma standardowego C ++ ABI i że wszelkie próby bezpośredniego połączenia tych dwóch projektów C ++ nie powiedzie się. Jaki jest dobry, zautomatyzowany sposób tworzenia warstwy zgodności, która pozwala mi to osiągnąć?

Na przykład prawdopodobnie biblioteka C ++ może się ujawnić za pośrednictwem interfejsu C. Następnie plik wykonywalny miałby kilka klas C ++, które owijałyby interfejs C udostępniany przez bibliotekę C ++. Od tamtej poryjest standardowy ABI dla C, zadziała.

Jedyne pytanie brzmi: jak automatycznie utworzyć interfejs C i klasy opakowujące C ++ - ręczne utrzymanie tego nie byłoby opcją. Projekt SWIG wygląda obiecująco, ale niestety C ++ nie jest jednym z wyjść SWIG wymienionych na ich stronie internetowej. Czy istnieje sposób, aby zrobić to, co chcę z SWIG? A może jest inny projekt niż SWIG, który pomógłby mi w tym zadaniu?

A może chodzi o to w niewłaściwy sposób?

Edytować: Podstawowa biblioteka C ++ ma być międzyplatformowa. Plik wykonywalny jest oczywiście specyficzny dla systemu Windows. Nie chcę zanieczyszczać podstawowej biblioteki do tego stopnia, że ​​niemożliwe jest skompilowanie jej na innych platformach.

questionAnswers(4)

yourAnswerToTheQuestion