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

4

我已经使用Homebrew安装了dlib。

brew install dlib

我该如何在Xcode中创建一个使用dlib的C++项目? 我尝试了一些构建设置,但是它们似乎没有起作用。
- 将/usr/local/Cellar/dlib/19.1_2/include添加到Header Search Paths - 将/usr/local/Cellar/dlib/19.1_2/lib添加到Library Search Paths - 将-ldlib添加到Other Linker Flags 我遇到了以下错误:
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查看调用)


你尝试过从源代码编译它吗? - Evgeniy
@Evgeniy 是的,我尝试过了。我得到了相同的结果。我发现在编译我的程序时,dlib 尝试访问 BLAS。在 macOS 上,它是在 Accelerate.framework 中提供的。将该框架添加到项目中后,问题已经解决。 - fivetech
我遇到了同样的问题。不过我正在试图通过cmake命令行进行编译。您知道如何将其添加到cmake文件中吗? - K. Shores
首先,你需要找到 Accelerate.framework 的位置。然后,你可以将它添加到 cmake 文件中。不过,我不知道该如何添加。我对 cmake 不是很熟悉。或者,你可以使用 OpenBLAS 库。但是,我从未尝试过。 - fivetech
@fivetech,你解决了那个问题吗?如果是的话,能否写一个小指南呢? - Dmytro Rostopira
我已经添加了答案。 - fivetech
2个回答

4
默认情况下,Homebrew 安装的 dlib 没有任何 BLAS 库。我已经通过将二进制文件与 Accelerate.framework 进行链接来解决这个问题。 Accelarate.framework 由 Apple 提供。它包含了 dlib 需要的一切。更多信息请参考: https://developer.apple.com/reference/accelerate 为了将该库添加到您的项目中:
  1. 在项目导航器(左侧)中选择项目名称。
  2. 如果它没有出现在编辑器中,请单击 "显示项目和目标列表" 并选择目标二进制文件。

    enter image description here

  3. 选择下面显示的 "Build Phases"。 enter image description here
  4. 展开 "Link Binary With Libraries" 并点击添加项目图标。
  5. 搜索 Accelerate.framework 并添加它。
  6. 将其状态更改为 "Required"。

或者,如果您使用 brew install dlib --with-openblas 命令卸载 dlib 并安装 dlib,它也可能起作用。但是,我还没有测试过。
顺便说一下,Homebrew 在您运行 brew info openblas 命令时会提醒您有关 openblas 的问题:

macOS 已经提供了这个软件,在并行安装另一个版本可能会导致各种问题。


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

那么你的设置就没问题了。我在使用时没有显式添加Accelerate.framework


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接