Целью данной работы является получение навыков работы с динамическими библиотеками и разработки программных компонентов, обеспечивающих независимость прикладных программ от конкретного типа устройства.
Библиотека должна содержать структуру, содержащую, в свою очередь, указатели на функции, реализующие примитивы работы с устройством (в данном случае - с динамиком). Структура будет иметь следущий вид:
/*********************
определение типа следует
поместить в заголовочный файл
*********************/
typedef struct pc_speaker {
int (* on)();
int (* off)();
int (* setf)(int frequency);
} PC_SPEAKER;
/*****************
основная часть исходного текста библиотеки
должна содержать 3 функции и переменную
типа PC_SPEAKER, поля которой должны быть
проинициализированы адресами этих 3-х функций
*****************/
int my_on();
int my_off();
int my_setf(int f);
PC_SPEAKER spk = {
on : my_on,
off : my_off,
setf: my_setf
}
Эта программа должна произвести следующие действия:
1) Загрузить ЯВНЫМ образом библиотеку (см. man dlopen)
2) Получить адрес структуры, содержащей адреса функций для работы с устройством
3) Проиграть мелодию с помощью функций из библиотеки
Не забудьте при компиляции программы указать -ldl:
gcc ............... -ldl
Дата последней модификации: 2010-01-24