我尝试在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?
答案 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,请直接添加加速。