The Exception is here:
g++ -L/usr/local/lib -I./include -I. -lopencv_core -lopencv_highgui -lopencv_imgproc main.o ColorTransfer.o
main.o: In function `showImg(std::string, cv::Mat, int)':
main.cpp:(.text+0x21): undefined reference to `cv::namedWindow(std::string const&, int)'
main.cpp:(.text+0x34): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
main.cpp:(.text+0x75): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
main.cpp:(.text+0x9d): undefined reference to `cv::waitKey(int)'
main.o: In function `main':
And the Makefile is here:
CC=g++
FLAGS=-L./lib -I./include -I. -lopencv_core -lopencv_highgui -lopencv_imgproc
all: ColorTransfer
ColorTransfer: main.o ColorTransfer.o
$(CC) $(FLAGS) main.o ColorTransfer.o -o ColorTransfer
main.o: main.cpp
$(CC) $(FLAGS) -c main.cpp -o main.o
ColorTransfer.o: ColorTransfer.cpp ColorTransfer.h
$(CC) $(FLAGS) -c ColorTransfer.cpp -o ColorTransfer.o
clean :
rm -rf main.o ColorTransfer.o
And current directory contains directory named lib, which has opencv libraries.
In your folder:
You have to be sure that there are:
And that your LD_LIBRARY_PATH point to this folder. Otherwise, you've to export it:
Have you download opencv sources or precompiled? Have you configured dynamic linker run-time bindings?
edit
Otherwise, try to check out this soloution!
You really should pay attention to the order of arguments to
g++
; it matters a lot (libraries should go last in good order - highest level to lowest level).Use
make -p
to learn about rules known tomake
.... Then improve yourMakefile
as followI leave you to correct the other lines of your
Makefile
... See also this answer ...I corrected my make rules above :
$^
has to be before$(LDLIBS)
!BTW, remake is a nice tool to debug
Makefile
-s; for instance, withremake -x