Скорее всего, это не сработает; см. вопрос C ++ Faq Lite об этом.
C ++ намного сложнее, чем C, и есть много дополнительных вещей, которые могут быть несовместимы.
Для нескольких примеров совместима ли обработка исключений? Размещаются ли объекты данных одинаково (в C порядок указан в списке, но в C ++ он может варьироваться в зависимости от спецификаторов доступа)? Vtables работают так же? Как обрабатывается dynamic_cast
?
Разница в искажении имен мешает вам связываться, но есть много других отличий, которые могут вас укусить.
Возможно, вам лучше использовать версию gcc, которую они сделали. Это то, что я однажды должен был сделать в похожем проекте.