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

bud*_*ude 3 c++ macos opencv clion

我一直在尝试使用 C++ 让 OpenCV (3.4.0) 在 MacOS (10.11.6) 上工作。

我尝试了各种安装方法,但按照本指南最终“成功”。

我现在尝试在 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;
}
Run Code Online (Sandbox Code Playgroud)

该项目构建得很好,但是当我尝试运行它时,出现以下错误:

dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.9.dylib
Run Code Online (Sandbox Code Playgroud)

我环顾四周,唯一能找到的相关问题是与 PHP 有关的。任何形式的帮助或正确方向的指示都将受到高度赞赏!提前谢谢了!

bat*_*str 5

OpenCV 需要libjpeg库来读取您的 jpg 文件,并且当您运行程序时它会动态加载(如 DLL)。该程序在预定义路径 - 中搜索该动态库/usr/local/opt/jpeg/lib/libjpeg.9.dylib,并且很可能那里没有该文件。

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

sudo find / -name 'libjpeg.*'
Run Code Online (Sandbox Code Playgroud)

如果没有找到任何内容(就像发生在我身上的情况一样),您有多种选择:从源代码构建库,找到预构建的库并下载它,或者从包管理器(如brew或MacPorts)安装它。也许我会先尝试酿造。注意:您可能需要 libjpeg 库的版本 9。

brew install libjpeg命令对我有用。(您需要先安装brew )。

第2步:当你获取库时,你需要确保程序可以找到它。通常有一种方法可以覆盖硬编码路径,例如/usr/local/opt在构建时使用 OpenCV 构建脚本中某处的某些构建脚本变量。一种更简单的方法可能是将其安装在预期的位置(位于/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) *