Указатель на функцию "неопределенная"

Итак, вот в чем проблема.

Я скомпилировал несколько объектных файлов, используя gcc -cи я их клонировал используя obj-copy, Если функция исходного файла объекта была названа foo(), то имена результирующих функций в клонированных объектах:foo1(); foo2(); foo3();

Затем я связываю эти 3 объекта с другим файлом, который содержит метод main, и я могу вызвать каждый из вариантов функции, используя, например, foo2();, Это прекрасно работает!

Однако, если я попытаюсь создать указатель на функцию, чтобы указать на эти функции с помощью:

functionPtr=&foo1; \\ tried also w/o the &

тогда я получаю:

error: 'foo2' undeclared (first use in this function)

Есть идеи? Это имеет отношение к связыванию?

1 ответ

Решение

foo2 где-то должен быть объявлен в заголовочном файле. Вы клонировали объектные файлы, но компилятору C все еще нужно что-то сказать, что есть функция с именем foo2 и какова его подпись. Если у вас есть декларация где-то для оригинала fooпросто сделайте копию этого и измените имя на foo2и убедитесь, что заголовок #includeв вашем источнике.

Другие вопросы по тегам