海兰,我有以下结构:即F2采用F1解决在静态库“未定义的参考”一个重定向
lib1.a
U f1
00000000 T f2
lib2.a
00000000 T f3
main.c:
#define f1(a, b) f3(a, b)
int main(){
f2(a, b);
}
注意。
有没有一种方法可以编译这个解决'未定义的引用'而无需修改代码或库?
主要问题不是为什么我得到'未定义的引用'为f1(因为它是未定义的,显而易见),但我如何编译这个没有执行f1。一些类似于映射的东西,我想在编译完成类似于重定向之后被称为f3而不是f1(这就是为什么在main.c中定义集合)。
感谢
====编辑==: 好了,所以,由于这样的事实,这个问题太难理解,我会添加来源:
lib2.c - - > $ gcc -c lib2.c; AR RCS lib2.a lib2.o
#include <stdio.h>
#include <stdlib.h>
int f3(int c, char *d)
{
printf("Rly: %d %s \n", c,d);
return 1;
}
lib2.h
int f3(int c, char *d);
lib.c - > $ GCC -c lib.c; AR RCS lib.a lib.o
#include <stdio.h>
#include <stdlib.h>
int f2(int c, char *d)
{
printf("%d %s\n", c,d);
f1(c,d);
return 1;
}
lib.h
int f2(int c, char *d);
的main.c - > $ GCC的main.c lib.a lib2.a
#include <stdio.h>
#include <stdlib.h>
#include "lib.h"
#include "lib2.h"
#define f1(a, b) f3(a, b)
int main(int argc, char **argv)
{
f2(argc, argv[0]);
return
}
这是我为创建类似场景而创建的文件。 无法修改lib.a和lib2.a。只有main.c和我如何编译它们。
的【什么是未定义参考/解析的外部符号错误可能的复制以及如何修复它?(https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix) – Olaf
这不是一个编译器错误。 – Olaf
@Olaf谢谢你的回答。我会尽力记住那篇文章。但这里的问题不是为什么我有“未定义的参考”,但如果有一种方法与LIB1和LIB2编译它,因为它是只与main.c中的变化,如果需要的。请注意,main.c必须调用f2,我希望f2调用f3而不是f1。 – dFroze