如何在 Xcode C++ 控制台应用程序中使用 dlib
How to use dlib in Xcode C++ console application
我已经使用 Homebrew 安装了 dlib。
brew install dlib
如何在 Xcode 中创建使用 dlib 的 C++ 项目?我尝试了一些构建设置。但是,它不起作用。
- 将
/usr/local/Cellar/dlib/19.1_2/include
添加到 Header 搜索路径
- 将
/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 查看调用)
默认情况下,homebrew 安装没有任何 BLAS 库的 dlib。我通过将 Accelerate.framework 与二进制文件链接起来解决了这个问题。
Accelarate.framework 由 Apple 提供。它包括 dlib 需要的一切。更多的信息:
https://developer.apple.com/reference/accelerate
为了将该库添加到您的项目中,
- 在项目导航器(左侧)中选择项目名称。
如果它没有出现在编辑器中,请单击 "Show project and targets list" 并选择目标二进制文件。
- 选择如下所示的"Build Phases"。
- 展开"Link Binary With Libraries"并单击添加项目图标。
- 搜索Accelerate.framework并添加。
- 将其状态更改为 "Required"。
或者,如果您卸载 dlib 并使用 brew install dlib --with-openblas
命令安装 dlib,它可能会起作用。但是,我还没有测试过。
顺便说一句,如果您 brew info openblas
:
,Homebrew 会警告 openblas
macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
brew cask install xquartz
brew install gtk+3 boost
brew install dlib
那么你的设置就没问题了。我在使用时没有明确添加 Accelerate.framework
。
我已经使用 Homebrew 安装了 dlib。
brew install dlib
如何在 Xcode 中创建使用 dlib 的 C++ 项目?我尝试了一些构建设置。但是,它不起作用。
- 将
/usr/local/Cellar/dlib/19.1_2/include
添加到 Header 搜索路径 - 将
/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 查看调用)
默认情况下,homebrew 安装没有任何 BLAS 库的 dlib。我通过将 Accelerate.framework 与二进制文件链接起来解决了这个问题。
Accelarate.framework 由 Apple 提供。它包括 dlib 需要的一切。更多的信息: https://developer.apple.com/reference/accelerate
为了将该库添加到您的项目中,
- 在项目导航器(左侧)中选择项目名称。
如果它没有出现在编辑器中,请单击 "Show project and targets list" 并选择目标二进制文件。
- 选择如下所示的"Build Phases"。
- 展开"Link Binary With Libraries"并单击添加项目图标。
- 搜索Accelerate.framework并添加。
- 将其状态更改为 "Required"。
或者,如果您卸载 dlib 并使用 brew install dlib --with-openblas
命令安装 dlib,它可能会起作用。但是,我还没有测试过。
顺便说一句,如果您 brew info openblas
:
macOS already provides this software and installing another version in parallel can cause all kinds of trouble.
brew cask install xquartz
brew install gtk+3 boost
brew install dlib
那么你的设置就没问题了。我在使用时没有明确添加 Accelerate.framework
。