Мне интересно узнать, какую библиотеку вы используете, у которой есть только версия C ++, а не чистый интерфейс C.
Независимо от того, что вы собираетесь вызывать код C ++, ваша оболочка будет считаться C ++, и ее нужно будет скомпилировать с помощью g ++. Это связано с name-mangling , и вам нужно будет иметь возможность вызывать те функции, которые предоставляет библиотека c ++. Вы можете смотреть на них с readelf -s
.
Функции, которые предоставляет ваша обертка, однако, должны быть отмечены extern "C"
, чтобы их имена не были искажены. Тогда вы сможете вызывать их из вашего приложения на чистом C.
Статическая и общая библиотека здесь не должны иметь значения. Это просто вопрос правильных генерируемых символов, чтобы связывание могло происходить.