我有兩組文件:PolynomialArithmetic.h/CPP和Options.h/CPP「未定義的符號」 調用C從另一個文件++函數時
Options.h定義爲:
// Options.h
#ifndef Options_h
#define Options_h
#define BINARY_HEAP 0
inline int chosenHeap();
#endif
Options.cpp定義爲:
// Options.cpp
#include "Options.h"
inline int chosenHeap() { return BINARY_HEAP; }
PolynomialArithmetic.cpp包含以下內容:
// PolynomialArithmetic.cpp
#include "PolynomialArithmetic.h"
#include "Options.h"
void foo() {
...
if (chosenHeap() == BINARY_HEAP) {
// DO SOMETHING
}
...
}
當我編譯,我得到的錯誤:
Undefined symbols for architecture x86_64:
"chosenHeap()", referenced from: foo() in PolynomialArithmetic.o
我猜這是某種形式的連接錯誤。下面是我如何編譯代碼:
# Makefile
# some configs
....
main: Options.o PolynomialArithmetic.o
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ -o [email protected] $(LDLIBS)
Options.o: Options.h Options.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c Options.cpp
PolynomialArithmetic.o: PolynomialArithmetic.cpp PolynomialArithmetic.h Options.h
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c PolynomialArithmetic.cpp
任何想法?