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

Posted

技术标签:

【中文标题】dyld:库未加载:/usr/local/opt/jpeg/lib/libjpeg.9.dylib OpenCV C++ MacOS【英文标题】:dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.9.dylib OpenCV C++ MacOS 【发布时间】:2018-05-10 12:31:02 【问题描述】:

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

我尝试了各种安装方式,但最终按照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】:

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

第一步是在你的电脑上找到这个库,你可以通过运行:

sudo find / -name 'libjpeg.*'

如果什么都没找到(就像我遇到的那样),您有多种选择:从源代码构建库,找到一个预构建的库并下载它,或者从包管理器(如 brew 或 MacPorts)安装它.可能我会先尝试 brew 。注意:您可能需要版本 9 的 libjpeg 库。

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) *

【讨论】:

哇!感谢battlmonstr提供了一个非常好的答案!运行 find 命令我实际上得到了很多结果......似乎它只是不在正确的地方!我什至有来自 hombrew 的相同库,但在不同的地方......我将如何将符号链接指向真实位置(我怀疑你的意思是所需动态库已经存在的位置之一)? sudo ln -s "&lt;existing path&gt;" "&lt;new link path&gt;" 需要在 mac 上使用“sudo”来获取 /usr/local 等位置 你是我的英雄!非常感谢!完美运行!

以上是关于dyld:库未加载:/usr/local/opt/jpeg/lib/libjpeg.9.dylib OpenCV C++ MacOS的主要内容,如果未能解决你的问题,请参考以下文章

php -v 返回 dyld:库未加载:/usr/local/opt/readline/lib/libreadline.7.dylib

dyld:库未加载:/usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib、php-fpm、php5.6

dyld:库未加载:VSCode终端中的/usr/local/opt/icu4c/lib/libicui18n.63.dylib

dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib 在 Mac 上使用 brew 安装节点后运行 php 错误

如何解决库未加载的错误?

Homebrew 不会运行 wget 命令(库未加载)