前几天在使用了tensorflow的项目里面加上cv::imshow的时候就会出现一下的错误:
This program requires version 3.5.0 of the Protocol Buffer runtime library, but the installed version is 2.6.1. Please update your library.
If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library.
但是一旦把cv::imshow去掉,就可以正常运行了。为了解决这个问题,我把内网和外网都翻了一个遍,尝试了无数种方法,今天居然发现作者就把解决方法写在了主页上,,,,,我靠。
废话不多说,首先这个问题出现的原因自然是opencv导致的,作者的原话先给大家看一下:
大意就是说项目里其他地方需要的protobuf的版本(应该就是tensorflow)和libopnecv_highgui需要的protobuf版本不一样,导致了冲突。所以这两个不能同时使用。解决办法也很简单,那就是重新编译opencv,然后在编译的时候加上参数:
-DWITH_QT=ON
然后,再次运行就可以正常显示啦!!
这个问题困扰了快两天,居然在无意中就解决了,算是惊喜吧。不过我就很奇怪,我找遍了全网都没找到解决方法,为什么作者加了一个参数就解决了,,,这也太厉害了。。。