我可能會忘記一些明顯的東西來解決這個問題。雖然對於同樣的問題還有其他問題,但沒有任何解決方案適用於我的情況。鏈接錯誤:未定義對在單獨文件中定義的函數的引用?
我有一個主文件sim.c,一個頭文件net.h,一個頭文件friends.h和一個帶有函數net.c的文件。我有一個makefile,我使用gmakemake> Makefile創建,其內容非常基本。
Header.mak(生成文件模板):
CFLAGS = -Wall -Wextra -pedantic -std=c99 -ggdb
LFLAGS = -ggdb
LDFLAGS =
的Makefile相關內容:
CPP_FILES =
C_FILES = net.c sim.c
PS_FILES =
S_FILES =
H_FILES = net.h friends.h
SOURCEFILES = $(H_FILES) $(CPP_FILES) $(C_FILES) $(S_FILES)
.PRECIOUS: $(SOURCEFILES)
OBJFILES =
#
# Main targets
#
all: net sim
net: net.o $(OBJFILES)
$(CC) $(CFLAGS) -o net net.o $(OBJFILES) $(CLIBFLAGS)
sim: sim.o $(OBJFILES)
$(CC) $(CFLAGS) -o sim sim.o $(OBJFILES) $(CLIBFLAGS)
#
# Dependencies
#
net.o: net.h
sim.o: net.h
我sim.c文件包含:
#include "net.h"
#include "friends.h"
我的頭文件中所包含的功能在net.c中並將它們全部定義爲存根。我複製並粘貼它們來創建函數標題,所以不應該有任何錯別字。
我net.c文件包含:
#include "net.h"
然而,任何時候sim.c一個函數試圖調用net.c的功能,它的錯誤在該行有:
"undefined reference to `function_name`".
如何讓sim.c能夠訪問net.c中的函數?
它實際上是一個領先進入另一個,當我看着它。我錯誤地在net.c中留下了一個無關的主函數,這讓gmakemake混淆爲試圖創建兩個彼此不依賴的獨立可執行文件。感謝您的幫助! – 2014-11-08 19:13:45