Курсовая работа: Разработка статических и динамических библиотек на языке программирования С/C++ в операционных системах UNIX

Закрывается библиотека функцией:

dlclose(void *handle);

При закрытии библиотеки динамический линковщик проверяет счетчик количества открытий библиотеки, и если она была открыта несколькими программами одновременно, то она не выгружается до тех пор, пока все программы не закроют эту библиотеку.

Для примера создадим программу, которая в качестве параметра получает название функции, которую она будет использовать в работе. Например, это будут математические функции возведения в степень. Создадим сначала динамическую библиотеку. Пишем ее код:

double power2(double x){

return x*x;

};

double power3(double x){

return x*x*x;

};

double power4(double x){

return power2(x)*power2(x);

};

//......

Сохраняем его в файл lib.c и создаем динамическую библиотеку libpowers.so следующими командами:

olya:~# gcc -fPIC -c lib.c

olya:~# gcc -shared lib.o -o libpowers.so

Теперь создаем основную программу в файле main.c :

#include <stdio.h>

/* заголовочный файл для работы с динамическими библиотеками */

#include <dlfcn.h>

int main(int argc, char* argv[]){

void *ext_library;// хандлер внешней библиотеки

double value=0;// значение для теста

double (*powerfunc)(double x);// переменная для хранения адреса функции

//загрузка библиотеки

ext_library = dlopen("/root/libpowers.so",RTLD_LAZY);

if (!ext_library){

//если ошибка, то вывести ее на экран

К-во Просмотров: 360
Бесплатно скачать Курсовая работа: Разработка статических и динамических библиотек на языке программирования С/C++ в операционных системах UNIX