/home/wangpan/work/gitnew/opencv_demo/opencv-3.4.2/linux/lib/libopencv_imgcodecs.a(grfmt_png.cpp.o): In function `cv::PngEncoder::write(cv::Mat const&, std::vector<int, std::allocator<int> > const&)':
grfmt_png.cpp:(.text._ZN2cv10PngEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0xf5): undefined reference to `png_set_longjmp_fn'
/home/wangpan/work/gitnew/opencv_demo/opencv-3.4.2/linux/lib/libopencv_imgcodecs.a(grfmt_png.cpp.o): In function `cv::PngDecoder::readData(cv::Mat&)':
grfmt_png.cpp:(.text._ZN2cv10PngDecoder8readDataERNS_3MatE+0xf4): undefined reference to `png_set_longjmp_fn'
/home/wangpan/work/gitnew/opencv_demo/opencv-3.4.2/linux/lib/libopencv_imgcodecs.a(grfmt_png.cpp.o): In function `cv::PngDecoder::readHeader()':
grfmt_png.cpp:(.text._ZN2cv10PngDecoder10readHeaderEv+0x1e5): undefined reference to `png_set_longjmp_fn'
网上查资料,(https://www.cnblogs.com/adong7639/p/7694755.html)说是libpng版本比较低。
看了下我的电脑,
wangpan@wangpan-OptiPlex-7050:/lib/x86_64-linux-gnu$ ll | grep png
lrwxrwxrwx 1 root root 18 2月 5 16:54 libpng12.so.0 -> libpng12.so.0.54.0
-rw-r--r-- 1 root root 149904 7月 11 2018 libpng12.so.0.54.0
lrwxrwxrwx 1 root root 19 2月 18 2016 libpng16.so.16 -> libpng16.so.16.20.0
-rw-r--r-- 1 root root 199040 2月 18 2016 libpng16.so.16.20.0
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ ll | grep png
-rw-r--r-- 1 root root 243746 7月 11 2018 libpng12.a
lrwxrwxrwx 1 root root 13 7月 11 2018 libpng12.so -> libpng12.so.0
lrwxrwxrwx 1 root root 35 7月 11 2018 libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
lrwxrwxrwx 1 root root 36 2月 18 2016 libpng16.so.16 -> /lib/x86_64-linux-gnu/libpng16.so.16
lrwxrwxrwx 1 root root 10 7月 11 2018 libpng.a -> libpng12.a
lrwxrwxrwx 1 root root 11 7月 11 2018 libpng.so -> libpng12.so
可以看出,现在用的libpng是libpng12.so。
解决方法:
1,创建一个软链接libpng16.so指向libpng16.so.16
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ sudo ln -s libpng16.so.16 libpng16.so
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ ll | grep png
-rw-r--r-- 1 root root 243746 7月 11 2018 libpng12.a
lrwxrwxrwx 1 root root 13 7月 11 2018 libpng12.so -> libpng12.so.0
lrwxrwxrwx 1 root root 35 7月 11 2018 libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
lrwxrwxrwx 1 root root 14 2月 5 17:03 libpng16.so -> libpng16.so.16
lrwxrwxrwx 1 root root 36 2月 18 2016 libpng16.so.16 -> /lib/x86_64-linux-gnu/libpng16.so.16
lrwxrwxrwx 1 root root 10 7月 11 2018 libpng.a -> libpng12.a
lrwxrwxrwx 1 root root 11 7月 11 2018 libpng.so -> libpng12.so
2,删除之前的软链接libpng.so
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ sudo rm -rf libpng.so
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ ll | grep png
-rw-r--r-- 1 root root 243746 7月 11 2018 libpng12.a
lrwxrwxrwx 1 root root 13 7月 11 2018 libpng12.so -> libpng12.so.0
lrwxrwxrwx 1 root root 35 7月 11 2018 libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
lrwxrwxrwx 1 root root 14 2月 5 17:03 libpng16.so -> libpng16.so.16
lrwxrwxrwx 1 root root 36 2月 18 2016 libpng16.so.16 -> /lib/x86_64-linux-gnu/libpng16.so.16
lrwxrwxrwx 1 root root 10 7月 11 2018 libpng.a -> libpng12.a
3,创建一个新的软链接libpng.so指向libpng16.so
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ sudo ln -s libpng16.so libpng.so
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ ll |grep png
-rw-r--r-- 1 root root 243746 7月 11 2018 libpng12.a
lrwxrwxrwx 1 root root 13 7月 11 2018 libpng12.so -> libpng12.so.0
lrwxrwxrwx 1 root root 35 7月 11 2018 libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
lrwxrwxrwx 1 root root 14 2月 5 17:03 libpng16.so -> libpng16.so.16
lrwxrwxrwx 1 root root 36 2月 18 2016 libpng16.so.16 -> /lib/x86_64-linux-gnu/libpng16.so.16
lrwxrwxrwx 1 root root 10 7月 11 2018 libpng.a -> libpng12.a
lrwxrwxrwx 1 root root 11 2月 5 17:04 libpng.so -> libpng16.so
问题解决。

1984

被折叠的 条评论
为什么被折叠?



