该程序是针对协议缓冲区运行时库的2.6.1版本编译的,该版本与已安装的版本(3.5.0)不兼容



当我将可执行文件和lib依赖性复制到另一台计算机并运行程序时,我会收到此错误:

该程序是针对协议缓冲区运行时库的2.6.1版本编译的,该版本与已安装的版本(3.5.0(不兼容。请与程序作者联系以获取更新。如果您自己编译了程序,请确保您的标题来自与链接时间库的协议缓冲区的同一版本。

此错误仅发生在新计算机中。我可以在没有任何问题的情况下在计算机上运行程序。

我试图与ldd -dobjdump -p engine | grep NEEDED检查哪个Libs中有Protobuf,但我找不到它们。

我的程序使用:opencv with cuda,boost,tensorflow,tensorrt。

两个计算机OS是Ubuntu 16.04.6 Lts。

我如何找到这一冲突问题的哪一部分?

我尝试通过添加-DBUILD_PROTOBUF=OFF -DPROTOBUF_UPDATE_FILES=ON -DPROTOBUF_INCLUDE_DIR=/usr/include -DPROTOBUF_LIBRARY=/usr/lib/x86_64-linux-gnu/libprotobuf.so来重新编译OpenCV,而无需Protobuf。

这无法解决问题。

您有两个不同的版本libprotobuf,一个由动态库中安装在/usr/local/lib/中。

但是,当您构建程序时,您包括其他版本的libprotobuf

您可以重新安装libprotobuf来解决此问题。

如果您从源安装libprotobuf,请确保添加了标志-Dprotobuf_BUILD_SHARED_LIBS=ON

最新更新