Простое и понятное решение - просто объявить функцию extern с соответствующим именем. Это позволяет вам скомпилировать вашу библиотеку без функции extern, которая еще не существует. Но ни вы, ни ваши пользователи не смогут связать полный исполняемый файл без предоставления соответствующей функции.
Я сам использовал этот подход и рекомендую его. Это позволяет избежать ненужных сложностей, не использует ничего, что не является абсолютно фундаментальным для всех сред программирования на C, и, что важно, очевидные ошибки будут отмечены во время сборки, а не во время выполнения (вы не получите сбоев во время выполнения, поскольку вызываются неопределенные функции обратного вызова). 1003 *