如何在Xcode C ++控制台应用程序中使用dlib

时间:2016-10-01 14:36:29

标签: c++ xcode build compiler-errors dlib

我使用Homebrew安装了dlib。

brew install dlib

如何创建在Xcode中使用dlib的C ++项目?我尝试了一些构建设置。但是,它不起作用。

  • /usr/local/Cellar/dlib/19.1_2/include添加到标题搜索路径
  • /usr/local/Cellar/dlib/19.1_2/lib添加到图书馆搜索路径
  • -ldlib添加到其他链接标记

我遇到了这些错误:

Undefined symbols for architecture x86_64:
"_cblas_dgemm", referenced from:
  dlib::blas_bindings::cblas_gemm(dlib::blas_bindings::CBLAS_ORDER, dlib::blas_bindings::CBLAS_TRANSPOSE, dlib::blas_bindings::CBLAS_TRANSPOSE, int, int, int, double, double const*, int, double const*, int, double, double*, int) in main.o
"_cblas_saxpy", referenced from:
  dlib::blas_bindings::cblas_axpy(int, float, float const*, int, float*, int) in main.o
"_cblas_sscal", referenced from:
  dlib::blas_bindings::cblas_scal(int, float, float*) in main.o
"_dgesvd_", referenced from:
  dlib::lapack::binding::gesvd(char, char, int, int, double*, int, double*, double*, int, double*, int, double*, int) in main.o
ld: symbol(s) not found for architecture x86_64

clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

2 个答案:

答案 0 :(得分:4)

默认情况下,自制软件安装dlib而不使用任何BLAS库。我已经通过将 Accelerate.framework 与二进制文件相关联来解决了这个问题。

Accelarate.framework 由Apple提供。它包括dlib需要的所有内容。更多的信息: https://developer.apple.com/reference/accelerate

为了将该库添加到您的项目中,

  1. 在项目导航器(左侧)中选择项目名称。
  2. 如果编辑器中没有显示,请点击"显示项目和目标列表" ,然后选择目标二进制文件。

    enter image description here

  3. 选择"构建阶段"如下所示。 enter image description here
  4. 展开"将二进制文件链接到库" ,然后点击添加项目图标。
  5. 搜索 Accelerate.framework 并添加。
  6. 将其状态更改为"必需"。
  7. 或者,如果您卸载dlib并使用brew install dlib --with-openblas命令安装dlib,它可能会起作用。但是,我还没有测试过它。

    顺便说一下,如果你brew info openblas

    ,Homebrew会警告openblas
      

    macOS已经提供此软件并在其中安装另一个版本   并行会造成各种麻烦。

答案 1 :(得分:0)

brew cask install xquartz
brew install gtk+3 boost
brew install dlib

然后您的设置就可以了。我在使用时未明确添加Accelerate.framework