在OS X上编译dlib

时间:2016-07-02 02:58:44

标签: dlib

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

在dlib root中:

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

在dlib root中:

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?

2 个答案:

答案 0 :(得分:2)

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

另一个(简单)解决方案是在没有BLAS / LAPACK支持的情况下构建dlib: 在dlib root中:

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

答案 1 :(得分:0)

添加框架加速就可以了

如果您使用cmake,请添加:

target_link_libraries(your_app "-framework accelerate")

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

相关问题