我工作的這個NeuralNet類:「對class :: function ...的未定義引用」 - 我錯誤地鏈接了嗎?
class NeuralNet {
public:
// Public functions
private:
vectors vect; // Point-of-access for functions in class vectors
// Private functions
};
而且我用這個非常簡單的makefile:
all: nnet.exe
nnet.exe: main.o neuralnet.o vectors.o
g++ -o nnet.exe main.o vectors.o neuralnet.o
main.o: main.cpp neuralnet.h
g++ -ggdb -c main.cpp
vectors.o: vectors.cpp vectors.h
g++ -ggdb -c vectors.cpp
neuralnet.o: neuralnet.cpp neuralnet.h vectors.h
g++ -ggdb -c neuralnet.cpp
clean:
rm -f *.o nnet.exe
當++獲取運行建立最終的可執行克,我得到了很多的誤差以下形式:
neuralnet.o: /path/to/neuralnet.cpp: line# : undefined reference to vectors::fn_name(args)
例如,我已經定義了一個函數:
template<typename T> void fill_vec(vector<T>&, int, double);
當我把這個功能我傳遞的參數,第一個參數vector<double>
類型聲明的變量,並且鏈接器將報告undefined reference to void vectors::fill_vec<double>(std::vector<double, std::allocator<double> >&, int, double)
在NeuralNet
執行所有調用的class vectors
功能,從被稱爲vect
。然而,networknet.cpp和networknet.h包含「vectors.h」包括,所以我假設我以某種方式鏈接不正確。
有沒有人看到任何明顯的東西?
你有vectors.h包含在neuralnet.h中嗎? – Kizaru 2011-03-07 05:22:52
是的,神經網絡頭文件也包含vectors.h文件。編輯問題以反映現在。 – Rob 2011-03-07 05:27:08
這聽起來很愚蠢 - fn_name()(cAsE sEnSiTiVe)正確使用正確嗎?在這個錯誤之後,你沒有收到「候選人是......」的信息或者你有什麼?順便說一句,這不是一個連接問題。 'g ++ -c'參數會取消鏈接直到最後一步。 – RageD 2011-03-07 05:43:27