Я работаю над этим классом NeuralNet:
class NeuralNet {
public:
// Public functions
private:
vectors vect; // Point-of-access for functions in class vectors
// Private functions
};
И я использую этот чрезвычайно простой make-файл:
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
Когда g ++ запускается для создания окончательного исполняемого файла,Я получаю много ошибок в следующей форме:
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)
Все вызовы функций class vectors
в реализации NeuralNet
от vect
.Тем не менее, neuralnet.cpp и neuralnet.h содержат включения для "vectors.h" , поэтому я предполагаю, что я каким-то образом неправильно связываю ссылки.
Кто-нибудь видит что-нибудь очевидное?