C++ 未定义引用,假定makefile未使用HeaderFile

C++ 未定义引用,假定makefile未使用HeaderFile,c++,makefile,undefined-reference,C++,Makefile,Undefined Reference,导致未定义的引用 CXXFLAGS = -std=c++11 -O2 -g -Wall -fmessage-length=0 OBJS = ProgramEntry.o LIBS = TARGET = Reading $(TARGET): $(OBJS) $(CXX) -o $(TARGET) $(OBJS) $(LIBS) all: $(TARGET) clean: rm -f $(OBJS) $(TARGET)

导致未定义的引用

CXXFLAGS    = -std=c++11 -O2 -g -Wall -fmessage-length=0

OBJS        = ProgramEntry.o

LIBS        =

TARGET      = Reading

$(TARGET):  $(OBJS)
    $(CXX) -o $(TARGET) $(OBJS) $(LIBS)

all:    $(TARGET)

clean:
    rm -f $(OBJS) $(TARGET)

我认为makefile没有使用任何头文件。如果我为头文件添加一个目录,我可以知道如何修复make文件。

它正在使用头文件,否则会出现编译器错误,而不是链接错误

将以下行更改为:

undefined reference to --


添加当前目录中的所有对象。

它正在使用标题,否则会出现编译器错误,而不是链接错误

将以下行更改为:

undefined reference to --


添加当前目录中的所有对象。

您只在一个对象文件中链接,因此其他文件中定义的函数不会进入您的程序


将所有
.o
s添加到
OBJS
。毕竟,这似乎就是该变量的要点?

您只链接了一个对象文件,因此其他文件中定义的函数不会进入您的程序


将所有
.o
s添加到
OBJS
。毕竟,这似乎是该变量的要点?

在我看来更像是链接器错误。@user1320881这些是链接器错误,但它们可能是由makefile错误引起的(例如,对象文件不重建,因为它不依赖于已更改的标头),在我看来更像是链接器错误。@user1320881这些是链接器错误,但是它们可能是由makefile错误引起的(例如,对象文件不重建,因为它不依赖于已更改的头文件)。是否有方法添加所有*.o文件。因为我可以在目录中添加或删除*.cpp文件。谢谢。是否有方法添加所有*.o文件。因为我可以在目录中添加或删除*.cpp文件。
OBJS        = ProgramEntry.o GetNodes.o GetElements.o MeshData.o
OBJS        = *.o