海蘭,我有以下結構:即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