【问题标题】:Compiling dlib on OS X在 OS X 上编译 dlib
【发布时间】:2016-11-04 11:53:10
【问题描述】:

我尝试在 OS X 上的 Qt 项目中使用 dlib。所以,在这次尝试中,我做了以下操作:

在 dlib 根目录中:

cd examples
mkdir build
cd build
cmake ..
cmake --build . --config Release

在 dlib 根目录中:

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/Users/user/dlib_build
cmake --build . --config Release --target install

.pro 文件:

INCLUDEPATH += /Users/user/dlib_build/include
LIBS += -L/Users/user/dlib_build/lib
LIBS += -ldlib

main.cpp:

//...
frontal_face_detector detector = get_frontal_face_detector();
//...

编译输出:

Undefined symbols for architecture x86_64:
"_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

如何解决这个问题并在 OS X 上将 dlib 与 Qt 一起使用?

【问题讨论】:

  • 此时可能没有用,但我最近遇到了同样的错误,在 dlib 上使用 otool -L 指出它使用的 LAPACK 库来自 libBLAS.dylib 和 ibLAPACK.dylib 部分OSX 上的Accelerate 框架。只要您还链接到此框架,该项目就应该编译。
  • 添加 Accelerate 框架对我有用。

标签: dlib


【解决方案1】:

添加框架加速就可以了

如果你使用cmake,添加:

target_link_libraries(your_app "-framework accelerate")

如果你使用xcode,直接添加加速。

【讨论】:

    【解决方案2】:

    正确的解决方案是添加缺少的链接库。构建 Dlib 时 - 它找到了一些 BLAS 库并启用了 BLAS 支持。 要找到这个库 - 查看来自 dlib 的 pkgconfig 文件,该文件位于 /Users/user/dlib_build/lib/pkgconfig,它将有类似“Libs:-L${libdir} -ldlib”的行 Qt 不会自动管理此类依赖项,因此您应该手动添加 blas 库

    另一个(简单)解决方案是在不支持 BLAS/LAPACK 的情况下构建 dlib: 在 dlib 根目录中:

    mkdir build
    cd build
    cmake .. -DDLIB_USE_BLAS=OFF -DDLIB_USE_LAPACK=OFF -DCMAKE_INSTALL_PREFIX=/Users/user/dlib_build
    cmake --build . --config Release --target install
    

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 1970-01-01
      • 2017-11-02
      • 2011-09-01
      • 2016-05-04
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多