使用makefile编译时出现C ++未定义参考错误

时间:2019-04-29 01:27:22

标签: c++ makefile

在C ++中使用makefile时,我多次遇到此问题。每当我觉得好像有不同的解决方案时。我知道我的问题在于文件的链接方式。然而,一切似乎都以正确的方式编写。任何帮助表示赞赏。

这是我的makefile:

CXX = g++
CXXFLAGS = -Wall

proj: proj.cpp a.o b.o c.o
        $(CXX) $(CXXFLAGS) a.o b.o c.o proj.cpp -o proj

a.o: a.cpp a.h b.o c.o
        $(CXX) $(CXXFLAGS) -c a.cpp

b.o: b.cpp b.h
        $(CXX) $(CXXFLAGS) -c b.cpp

c.o: c.cpp c.h
        $(CXX) $(CXXFLAGS) -c c.cpp

依赖关系都是正确的,我已经进行了多次试验和检查。

这是我收到的错误:

g++ -Wall -c b.cpp
g++ -Wall -c c.cpp
g++ -Wall -c a.cpp
g++ -Wall a.o b.o c.o proj.cpp -o proj
a.o: In function `a::a()':
a.cpp:(.text+0x25): undefined reference to `b<c>::b()'
a.cpp:(.text+0xa3): undefined reference to `b<c>::~b()'
a.o: In function `a::a(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
a.cpp:(.text+0xf3): undefined reference to `b<c>::b()'
a.cpp:(.text+0x14b): undefined reference to `b<c>::~b()'
a.o: In function `a::~a()':
a.cpp:(.text+0x1e0): undefined reference to `b<c>::~b()'
a.o: In function `a::function()':
a.cpp:(.text+0x86f): undefined reference to `b<c>::function2(c const&, bool)'
a.cpp:(.text+0x8e8): undefined reference to `b<c>::operator[](int)'
collect2: error: ld returned 1 exit status
make: *** [makefile:5: proj] Error 1

再次,将寻求任何帮助!在过去的数天里,这一直困扰着我。

0 个答案:

没有答案