Обго́ртка бібліоте́ки () — є проміжним шаром між прикладною програмою та іншою бібліотекою або інтерфейсом програмування додатку (API).
Метою написання обгортки бібліотеки може бути забезпечення нормальної роботи бібліотеки (API) в якій-небудь (найчастіше скриптовій) мові, в якій прямий виклик функцій цієї бібліотеки API ускладнений або неможливий. Іншою метою може бути забезпечення додаткової зручності для прикладного програміста — адаптація бібліотек до об'єктно-орієнтованого стилю програмування, компенсація незручного дизайну бібліотеки та ін. Існують також крос-платформові обгортки бібліотек, які приховують реалізацію для різних операційних систем, наприклад WxWidgets.
Приклад Приклад показує загальну реалізацію бібліотеки-обгортки. Тут інтерфейс C++ діє як "обгортка" навколо інтерфейсу на мові C.
C-інтерфейс int pthread_mutex_init(pthread_mutex_t * mutex , pthread_mutexattr_t * attr); int pthread_mutex_destroy (pthread_mutex_t * mutex); int pthread_mutex_lock (pthread_mutex_t * mutex ); int pthread_mutex_unlock (pthread_mutex_t * mutex );
C++-обгортка class Mutex { pthread_mutex_t mutex;
public:
Mutex()
pthread_mutex_init(&mutex, 0);
~Mutex()
pthread_mutex_destroy(&mutex);
private:
friend class Lock;
void lock()
pthread_mutex_lock(&mutex);
void unlock()
pthread_mutex_unlock(&mutex);
class Lock { Mutex& mutex; public: Lock(Mutex& mutex):mutex(mutex){mutex.lock();} ~Lock(){mutex.unlock();}
Початковий C-інтерфейс можна розглядати як недостатньо надійний, зокрема може статися так, що користувачі бібліотеки забудуть розблокувати заблокований мютекс. Новий інтерфейс, використовує RAII в нових класах Mutex і Lock для забезпечення автоматичного розблокування Mutex і, відповідно, об'єкта pthread_mutex_t.
Зв'язність між несумісними мовами, середовищами виконання Деякі бібліотеки-обгортки працюють як міст між клієнтською програмою та бібліотекою, яка використовує іншу, несумісну технологію із основною програмою. Наприклад, Java програми працюють в віртуальній машині й не можуть напряму викликати системні функції ОС, які реалізовані на C. В таких мовах програмування, як Java, замість окремих бібліотек-обгорток використовується окремий механізм — інтерфейс до зовнішніх функцій.
Деякі приклади реалізації такого механізму: Java Native Interface Java Native Access SWIG
Відомі обгортки бібліотек Кілька прикладів відомих обгорток бібліотек Pthreads for WIN32 OpenGL Bindings for Python MySQL++ JavaCV
Див. також Адаптер З'єднувальний код Функція-обгортка