在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
再次,将寻求任何帮助!在过去的数天里,这一直困扰着我。