我将openCV捆绑到SDK中,供Linux中的C ++开发人员使用。我将测试可执行文件与我构建的库链接起来,它给我一大堆错误,其中一个是:
/path/to/build/libopencv_core.a(copy.cpp.o): In function `cv::Mat::setTo(cv::_InputArray const&, cv::_InputArray const&)':
copy.cpp:(.text._ZN2cv3Mat5setToERKNS_11_InputArrayES3_+0x15c1): undefined reference to `ippicviSet_32f_C1MR'
copy.cpp:(.text._ZN2cv3Mat5setToERKNS_11_InputArrayES3_+0x1700): undefined reference to `ippicviSet_32f_C4MR'
copy.cpp:(.text._ZN2cv3Mat5setToERKNS_11_InputArrayES3_+0x1743): undefined reference to `ippicviSet_32s_C4MR'
copy.cpp:(.text._ZN2cv3Mat5setToERKNS_11_InputArrayES3_+0x17a4): undefined reference to `ippicviSet_16s_C4MR'
copy.cpp:(.text._ZN2cv3Mat5setToERKNS_11_InputArrayES3_+0x1805): undefined reference to `ippicviSet_16u_C4MR'
这个错误引用是什么?我应该在没有ipp的情况下建设吗?我编译了opencv libs -fPIC
并且是独立的。我实际上收到了数以千计的错误,其中有一些提及ippicvi
,这只是一个例子。
答案 0 :(得分:2)
我有同样的错误。您需要将可执行文件链接到库libippicv
。
这是OpenCV使用的第三方库,您可以在/usr/local/share/OpenCV/3rdparty/lib/libippicv.a
中找到它。
您还可以在opencv.pc
中找到OpenCV使用的所有依赖项。例如:
/usr/local/lib/pkgconfig/opencv.pc
#pkg-config的包信息
prefix = / usr / local exec_prefix = $ {prefix} libdir = $ {exec_prefix} / lib includedir_old = $ {前缀} /包含/ OpenCV的 includedir_new = $ {前缀} /包括
名称:OpenCV
描述:开源计算机视觉库
版本:3.2.0Libs:-L $ {exec_prefix} / lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private:-L $ {exec_prefix} / share / OpenCV / 3rdparty / lib -llibwebp -lippicv -L / usr / lib / x86_64-linux-gnu -lpng -lz -ltiff -ljasper -ljpeg -lImath -lIlmImf -lIex -lHalf -lIlmThread -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lgthread-2.0 -ldc1394 -lavcodec-ffmpeg -lavformat-ffmpeg -lavutil -ffmpeg -lswscale -ffmpeg -lstdc ++ -ldl -lm -lpthread -lrt Cflags:-I $ {includedir_old} -I $ {includedir_new}