cmake build opencv程序:加载共享库时出错:libopencv_imgproc.so.4.2:无法打开共享对象文件:没有此类文件或目录 我正在编译我的C++程序,使用OpenCV,这里是我的代码: #include <iostream> #include "opencv2/opencv.hpp" using namespace std; using namespace cv; int main() { cout << "Hello world!\n"; Mat image = cv::imread(R"(1596254171-image.jpg)"); return 0; }
编译操作一切正常,但当我执行我的测试床时,我得到了错误:cmake build opencv程序:加载共享库时出错:libopencv_imgproc.so.4.2:无法打开共享对象文件:没有此类文件或目录 我正在编译我的C++程序,使用OpenCV,这里是我的代码: #include <iostream> #include "opencv2/opencv.hpp" using namespace std; using namespace cv; int main() { cout << "Hello world!\n"; Mat image = cv::imread(R"(1596254171-image.jpg)"); return 0; },c++,opencv,cmake,C++,Opencv,Cmake,编译操作一切正常,但当我执行我的测试床时,我得到了错误: error while loading shared libraries: libopencv_imgproc.so.4.2: cannot open shared object file: No such file or directory 我想知道为什么我已经指定了链接路径,但是链接器仍然找不到imgproc库,为什么可以找到core.so,但是imgproc.so没有?“我已经指定了链接路径,但是链接器仍然找不到imgproc库”
error while loading shared libraries: libopencv_imgproc.so.4.2: cannot open shared object file: No such file or directory
我想知道为什么我已经指定了链接路径,但是链接器仍然找不到imgproc库,为什么可以找到core.so,但是imgproc.so没有?“我已经指定了链接路径,但是链接器仍然找不到imgproc库”-错误是由加载程序发出的,而不是由链接器发出的。CMake以某种方式为您的可执行文件设置RPATH,因此每个需要的库都可以由可执行文件加载。但完全填充库间依赖关系是您的任务。对您使用的每个OpenCV库运行
ldd
,并检查它是否找到所有依赖库。另请参见以下问题:。感谢您的帮助。我发现imgcodecs需要imgproc,但我如何指定“imgcodecs在哪里搜索imgproc”?通常,Linux上的共享库以RPATH的形式包含指向所有所需库的路径。您的OpenCV库可能有这些设置,但似乎您已经移动了这些库,所以RPATH不再指向它们。您可以使用适当的RPATH修补库。对此,请参见以下问题:。或者,将带有库的目录添加到LD\u LIBRARY\u PATH
环境变量:。
error while loading shared libraries: libopencv_imgproc.so.4.2: cannot open shared object file: No such file or directory