Я уверен, что эта проблема уже решалась, и мне любопытно, как это сделать. У меня есть код, при запуске которого я хочу просканировать содержимое каталога и загрузить его функциональность.
В частности, я работаю со скриптовым движком, в который хочу добавлять вызовы функций. Я хочу, чтобы основной движок предоставлял очень ограниченную функциональность. Пользователь должен иметь возможность добавлять дополнительные функции через сторонние библиотеки, которые я хочу, чтобы движок сканировал и загружал. Как это сделать?





Это зависит от платформы. В win32 вы вызываете LoadLibrary для загрузки библиотеки DLL, а затем получаете от нее функции с помощью GetProcAddress. На платформах Unixy эквивалентами являются dlopen и dlsym.
Вы можете использовать функции POSIX dlopen / dlsym / dlerror / dlclose в Linux / UNIX для динамического открытия общих библиотек и доступа к предоставляемым ими символам (включая функции), подробности см. В страница руководства.
Если вы хотите использовать для этого библиотеку, я бы порекомендовал GLib (служебная библиотека, которая находится под набором инструментов GTK + UI). В нем есть суб-API «GModule», который обеспечивает простой и переносимый способ сделать это. Это избавляет вас от необходимости самостоятельно переносить соответствующие вызовы, а также предоставляет вам остальную часть GLib, которая является очень удобной для использования в программах на C любого размера.
Вы можете найти множество примеров в существующих программах. Бесстыдный плагин: моя программа, повторяющая echoping.sourceforge.net, является относительно простым примером такого использования dlopen ().