#c #static-libraries
#c #статические библиотеки
Вопрос:
Я хотел бы знать, возможно ли в статической библиотеке вызвать функцию, реализация которой находится в моем приложении, а не в библиотеке.
Вот так:
Статическая библиотека
foo.h
void foo_func();
foo.c
#include "foo.h"
void foo_func()
{
app_func();
}
Приложение
main.c
#include <foo.h>
uint8_t flag = FALSE;
uint8 main()
{
foo_func();
while(!flag);
return 0;
}
void app_func()
{
flag = TRUE;
}
Комментарии:
1. Эй, это так сложно протестировать?
2. Это так, но это также очень плохой способ настройки. Расскажите нам о вашей реальной проблеме.
3. Лучше, чтобы приложение передавало указатель функции в библиотеку во время выполнения. Тогда это будет работать и с динамической библиотекой.
Ответ №1:
Статическая библиотека, созданная с помощью ar
, — это просто архив .o
объектных файлов. Вы можете вызывать любые внешние функции в статической библиотеке, созданной с помощью ar
, присутствующей или нет, как с любым .o
файлом. Хотя это возможно, обратный вызов приложения, возможно, не лучший выбор дизайна.
Комментарии:
1. Почему это плохой выбор дизайна?