MAC 下 OpenCV4 配置 VScode 失败 Xcode 成功记录(2021年12月)

2022-1-22更新(VScode 设置成功)

详情请见:
https://blog.youkuaiyun.com/qq_42067550/article/details/122634801

问题描述

安装好了 OpenCV
但是在 VScode 里面花了3天时间尝试设置,最后以失败告终,转用 Xcode 后一切顺利,没有任何报错。。。。。

报错代码:

Undefined symbols for architecture x86_64:
  "__ZN2cv11namedWindowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi", referenced from:
      _main in cckR1lBO.o
  "__ZN2cv6imreadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi", referenced from:
      _main in cckR1lBO.o
  "__ZN2cv6imshowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayE", referenced from:
      _main in cckR1lBO.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

网上查了很多,百度谷歌都试过了,没有找到一个有用的解决方案。
害得我以为是 OpenCV 安装出了问题,重装了 3 次,还把 VScode 也重装了好几次,无功而返。
从问题描述来看,一旦调用了 OpenCV 的函数,比如 imread,imshow 等就会出错,原因不明。
之前尝试过的方法罗列出来,避免遇到同样问题的人再踩坑:

  1. 在编译中添加 -std=c++11
  2. 使用 g++-11
  3. 设置 includePath 中的路径

安装 OpenCV

方法一:Homebrew

安装 homebrew,使用国内源速度很快!

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

依赖环境:

首先是 xcode

sudo xcode-select --install

然后是 pkg-config 用于精简编译(不确定在 xcode 环境下是否需要这个,vscode是需要的)

brew install pkg-config

使用 homebrew 安装
这里命令中不需要 opencv4,只要 opencv 即可

brew install opencv

速度很快也很快,而且各个文件夹路径设置的也很合理,建议 MAC 系统下还是使用 brew 安装比较好!
然后配置环境变量,前面一长串不重要,重要的是你看最后的结尾要对得上,因为有的安装完后会有软链接,比如/usr/local/opt/opencv/4.5.4/bin 这种形式

export PATH="/usr/local/opt/opencv@4/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/opencv@4/lib"
export CPPFLAGS="-I/usr/local/opt/opencv@4/include"
export PKG_CONFIG_PATH="/usr/local/opt/opencv@4/lib/pkgconfig"

方法二:源代码编译安装

下载地址:OpenCV 源代码
使用下载源代码编译安装,这种方式最后得到的路径和 brew 安装是有区别的,在 IDE 中设置的时候需要根据情况看(反正我试了是不一样的,不知道别人如何)
下载后进行解压到任意目录。
比如我的目录/users/jack/opencv-4.5.4

cd /users/jack/opencv-4.5.4
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
make # make -j2 可以加速
sudo make install

这里注意两点&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值