Мне интересно узнать, какую библиотеку вы используете, которая имеет только версию на C++, а не чистый C-интерфейс.
Независимо от того, что вы собираетесь называть код C++, ваша оболочка будет считаться C++ и должна быть скомпилирована с помощью g ++. Это связано с name-mangling, и вы должны будете иметь возможность вызывать те функции, которые предоставляет библиотека C++. Вы можете посмотреть на них с readelf -s
.
Однако функции, которые предоставляет ваша оболочка, должны быть отмечены extern "C"
, чтобы их имена не искалечились. Тогда вы сможете назвать их из своего чистого приложения C.
Статическая и общая библиотека не имеет никакого значения здесь. Это просто вопрос создания правильных символов, чтобы связь могла произойти.
A C оберткой C++? Какой приятный поворот. –
@LightnessRacesinOrbit: Это может происходить часто. Вы можете написать библиотеку на C++, но хотите, чтобы ее можно было использовать программой C. –
Хорошее чтение: [Смешивание C и C++] (http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html) –