在 OS X 上编译 dlib
Compiling dlib on OS X
我尝试在 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 时 - 它找到了一些 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
添加框架加速即可
如果你使用cmake,添加:
target_link_libraries(your_app "-framework accelerate")
如果使用xcode,直接加accelerate。
我尝试在 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 时 - 它找到了一些 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
添加框架加速即可
如果你使用cmake,添加:
target_link_libraries(your_app "-framework accelerate")
如果使用xcode,直接加accelerate。