所以,这就是问题所在。
我使用gcc -c
编译了一些目标文件,并使用obj-copy
克隆了它们。
如果初始目标文件的a函数名为foo()
,则克隆对象中生成的函数名称为:
foo1(); foo2(); foo3();
然后,我将这3个对象与包含main方法的另一个文件链接起来,并且我可以通过使用例如以下方法来调用每个函数变体。 foo2();
。这项工作非常好!
但是,如果我尝试使用以下命令创建指向这些函数的函数指针:
functionPtr=&foo1; \\ tried also w/o the &
然后,我得到:
error: 'foo2' undeclared (first use in this function)
有什么想法吗?这与链接有关吗?
答案 0 :(得分:1)
foo2
。您已经克隆了目标文件,但是C编译器仍然需要告诉它有一个名为foo2
的函数以及它的签名是什么。如果您在原始foo
的某个地方有声明,只需复制一份,并将名称更改为foo2
,并确保标题为#include
' d源。