Сложность создания библиотеки C ++, распространяемой в двоичном виде, заключается в том, что ваши клиенты - пользователи библиотеки - обычно вынуждены использовать тот же компилятор C ++, с которым вы создали библиотеку. Это может быть проблематично, если вы хотите идти в ногу со временем, а они нет, или если они хотят идти в ногу со временем, а вы нет. Если вы имеете дело с исходным кодом, это не проблема, если ваш C ++ достаточно переносим, чтобы позволить его использовать всем компиляторам, которые используют ваши клиенты.
Если код можно использовать из C, я бы, вероятно, написал код для интерфейса C. Альтернативно, предоставьте два интерфейса - собственный интерфейс C ++ и интерфейс C. Но это больше, чем просто интерфейс на C. С другой стороны, могут быть преимущества интерфейса C ++ (возможно, с использованием итераторов STL и т. Д.), И это может повлиять на ваше решение.