Ciao a tutti,
Ho scritto un programma che usa le librerie ANN, che ho scaricato e compilato.
Nel mio programma ho opportunamente aggiunto la riga
#include "ann/include/ANN/ANN.h"
La compilazioni (attraverso make) non restituisce errori di sintassi, ma termina inaspettatamente ritornando quando segue:
posto anceh il mio makefile, dato che il problema sia dato dal linker che non sa dove sono le librerie...codice:cristian@cristian-note:~/Desktop/Prova/FaceEmotion$ make g++ -march=i686 -mmmx -msse -msse2 -msse3 -O3 -pipe -Wall -fomit-frame-pointer -D_ENABLE_TILT -D_ENABLE_FORCE -I/usr/include/opencv/ -c core/main/faceEmotion.cpp -o core/main/faceEmotion.o core/main/faceEmotion.cpp: In function ‘int main()’: core/main/faceEmotion.cpp:31: warning: deprecated conversion from string constant to ‘char*’ core/main/faceEmotion.cpp:18: warning: unused variable ‘cc’ for m in faceEmotion ; do \ g++ -march=i686 -mmmx -msse -msse2 -msse3 -O3 -pipe -Wall -fomit-frame-pointer `pkg-config --cflags opencv` -Iann/include -Lann/lib -lANN -lm -lpthread -L/usr/lib `pkg-config --libs opencv` -o $m ./core/src/ColorClassifier.o ./core/src/ColorDataset.o ./core/main/$m.o #; \ done ./core/src/ColorClassifier.o: In function `KnnColorClassifier::fast_build(ColorDataset*, int, unsigned int, bool)': ColorClassifier.cpp:(.text+0x17ec): undefined reference to `annAllocPt(int, double)' ColorClassifier.cpp:(.text+0x180d): undefined reference to `annAllocPts(int, int)' ColorClassifier.cpp:(.text+0x19e3): undefined reference to `ANNkd_tree::ANNkd_tree(double**, int, int, int, ANNsplitRule)' ColorClassifier.cpp:(.text+0x24a4): undefined reference to `annDeallocPt(double*&)' ColorClassifier.cpp:(.text+0x24b6): undefined reference to `annDeallocPts(double**&)' collect2: ld returned 1 exit status make: *** [main] Error 1 cristian@cristian-note:~/Desktop/Prova/FaceEmotion$
codice:ifndef srcdir srcdir = ./core/src endif ifndef maindir maindir = ./core/main endif #g++ ann_sample.cpp -o ann_sample -Iann/include -Lann/lib -lANN CXX = g++ RM = rm -f OBJ = $(patsubst $(srcdir)/%.cpp,$(srcdir)/%.o,$(wildcard $(srcdir)/*.cpp)) MAINOBJ = $(patsubst $(maindir)/%.cpp,$(maindir)/%.o,$(wildcard $(maindir)/*.cpp)) EXE = $(patsubst $(maindir)/%.cpp, % ,$(wildcard $(maindir)/*.cpp)) #CDEBUG = -fpic -ggdb CFLAGS=-march=i686 -mmmx -msse -msse2 -msse3 -O3 -pipe -Wall -fomit-frame-pointer CXXFLAGS=${CFLAGS} ${CDEBUG} OPENCVCONF = `pkg-config --libs opencv` OPENCVFLAGS = `pkg-config --cflags opencv` all: main main : $(OBJ) $(MAINOBJ) for m in $(EXE); do \ $(CXX) $(CXXFLAGS) $(OPENCVFLAGS) -Iann/include -Lann/lib -lANN -lm -lpthread -L/usr/lib $(OPENCVCONF) -o $$m $(OBJ) $(maindir)/$$m.o #; \ done %.o : %.cpp $(CXX) $(CXXFLAGS) -D_ENABLE_TILT -D_ENABLE_FORCE -I/usr/include/opencv/ -c $*.cpp -o $*.o clean: $(RM) $(srcdir)/*.o *~ $(RM) $(maindir)/*.o *~
non ho idea di come sistemare il tutto... a questo link potete scaricare se vi serve i sorgenti in questione
http://www.4shared.com/file/51220711.../Provatar.html

Rispondi quotando