dyld:未加载库:/usr/local/opt/jpeg/lib/libjpeg.9.dylib OpenCV C ++ MacOS

时间:2018-05-10 12:31:03

标签: c++ macos opencv clion

我一直在尝试使用C ++使OpenCV(3.4.0)在MacOS(10.11.6)上运行。

我已经尝试了各种方式进行安装,但结束了#34;成功"按照this指南。

我现在正尝试在CLion中运行以下示例项目:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( )
{
    Mat image;
    image = imread("image1.jpg", CV_LOAD_IMAGE_COLOR);

    waitKey(0);
    return 0;
}

该项目构建正常,但当我尝试运行它时,我收到以下错误:

dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.9.dylib

我一直在四处寻找,我能找到的唯一相关问题与PHP有关。 任何形式的帮助或指针在正确的方向是非常感谢! 非常感谢提前!

1 个答案:

答案 0 :(得分:2)

OpenCV要求libjpeg库读取您的jpg文件,并在运行程序时动态加载(如DLL)。程序以预定义的路径/usr/local/opt/jpeg/lib/libjpeg.9.dylib搜索动态库,很可能你没有这个文件。

第一步是在您的计算机上找到此库,您可以通过运行以下命令来执行此操作:

sudo find / -name 'libjpeg.*'

如果没有找到(就像它发生在我身上),你有几个选择:从源代码构建库,找到预先构建的库并下载它,或者从包管理器(如brew或MacPorts)安装它。可能我会先尝试酿造。注意:您可能需要libjpeg库的第9版。

brew install libjpeg命令对我有用。 (首先需要install brew。)

步骤2:当您获得库时,您需要确保程序可以找到它。通常有一种方法可以在构建时使用OpenCV构建脚本中的某个构建脚本变量覆盖硬编码路径,如/usr/local/opt。一种更简单的方法可能是将其安装在预期的位置(/usr/local/opt),或者将该路径的符号链接安装到实际位置。

我使用过brew,它实际上是在预期路径上安装的:

bash-3.2$ pwd /usr/local/opt/libjpeg/lib bash-3.2$ ls libjpeg.9.dylib libjpeg.a libjpeg.dylib pkgconfig bash-3.2$ brew info libjpeg jpeg: stable 9c (bottled) Image manipulation library http://www.ijg.org /usr/local/Cellar/jpeg/9c (21 files, 724.6KB) *