1

所以,这就是问题所在。

我使用 编译了一些目标文件,gcc -c并使用obj-copy. 如果初始对象文件的 a 函数名为foo(),则克隆对象中生成的函数名称为: foo1(); foo2(); foo3();

然后,我将这 3 个对象与另一个包含 main 方法的文件链接起来,我可以使用 eg 调用每个函数变体foo2();。这项工作非常好!

但是,如果我尝试使用以下方法创建一个指向这些函数的函数指针:

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

然后,我得到:

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

有任何想法吗?这与链接有关吗?

4

1 回答 1

1

foo2必须在某处的头文件中声明。您已经克隆了目标文件,但是 C 编译器仍然需要一些东西来告诉它有一个被调用的函数foo2以及它的签名是什么。如果您在某处有原始 的声明foo,只需复制一份并将名称更改为foo2,并确保标题#include在您的源代码中。

于 2014-03-25T18:36:33.850 回答