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