Указатель на функцию "неопределенная"
Итак, вот в чем проблема.
Я скомпилировал несколько объектных файлов, используя 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
в вашем источнике.