Целью данной работы является получение навыков работы с динамическими библиотеками и разработки программных компонентов, обеспечивающих независимость прикладных программ от конкретного типа устройства.
Библиотека должна содержать структуру, содержащую, в свою очередь, указатели на функции, реализующие примитивы работы с устройством (в данном случае - с динамиком). Структура будет иметь следущий вид:
/********************* определение типа следует поместить в заголовочный файл *********************/ 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