Проблема компоновки в динамической библиотеке при смешивании кода C C ++ - PullRequest
3 голосов
/ 23 сентября 2011

У меня была динамическая библиотека C, из-за некоторых изменений требований мне пришлось провести рефакторинг.

У меня был следующий код в одном файле c.

__attribute__((noinline))
static void *find_document(...)
{
  ...
}

bool docuemnt_found(const char *name) {
 ...
    find_document(...);
 ...
}

Я разделил функцию docuemnt_found () в другом файле cpp. Теперь функция docuemnt_found () не может связываться с методом find_document ()?

Я попытался создать заголовок для файла c, а затем включить заголовок, используя extern "C", но это не сработало.

Я хочу сохранить find_document () встроенным. Здесь чего-то не хватает или что-то не так?

1 Ответ

6 голосов
/ 23 сентября 2011

Проблема здесь заключается в объявлении функции как static - в Си это говорит о том, что она должна быть доступна для других функций в том же модуле компиляции (файл .c), но не для других функций вне файла.Удаление static должно решить проблему.

Кстати, вторая функция написана с ошибкой - она ​​должна быть document_found, а не docuemnt_found.

...