указатель на функцию передачи не работает - PullRequest
0 голосов
/ 01 марта 2011

У меня есть 2 библиотеки.Библиотека A скомпилирована на C. Библиотека B скомпилирована на C ++, но в основном это C-код.

Мне нужно вызвать следующую функцию в библиотеке A:

foo* c_func(int64_t (*ptr_to_func)(void));

Первое, что делает эта функция:

if(!ptr_to_func)
  return NULL;

ptr_to_func должен указывать нафункция в библиотеке B, которая объявлена ​​как:

int64_t bar(void);

У меня есть файл cpp с главной функцией, которая вызывает другую функцию, там я делаю следующее:

foo* f = c_func(bar);

Затем япроверьте, если f равно нулю.Это.

Что я делаю не так?

1 Ответ

4 голосов
/ 01 марта 2011

То, что вы делаете, кажется правильным, с оговоркой, что ваша функция bar() должна быть объявлена ​​в секции extern "C" {.

c_func(), вероятно, возвращает NULL по другой причине. Пройдите через него в отладчике и посмотрите (установите точку останова в начале c_func()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...