原文链接:http://blog.youkuaiyun.com/yiyuehuan/article/details/70667318
在 Dlib 自己提供的解决方案 example 中编译各项目一般不会有什么问题,但是如果想用 Dlib 中的示例代码来新建项目那么恐怕就得注意以下几点:
假设 Dlib 被解压在目录 ***\Dlib\dlib-19.4\
下。
测试版本:dlib-19.4
测试环境:VS 2015、VS 2017
-
将包含 dlib 的目录加入到项目的 附加包含目录 中,即目录
***\Dlib\dlib-19.4
。 -
如果在链接(编译一般不会有问题)的时候出现下面的问题
error LNK2001: 无法解析的外部符号 USER_ERROR__missing_dlib_all_source_cpp_file__OR__inconsistent_use_of_DEBUG_or_ENABLE_ASSERTS_preprocessor_directives
那么就需要将
dlib/all/source.cpp
该文件添加到项目中,注意要以添加现有项的方式直接选取该文件。若没有出现上面的问题,则一般不需要添加该文件。
-
不可将 dlib 目录添加到项目的 附加包含目录 。即目录
***\Dlib\dlib-19.4\dlib
否则编译的时候会报错***\dlib\dlib-19.4\dlib\dlib_include_path_tutorial.txt(1): fatal error C1189: #error: “Don’t put the dlib folder in your include path”
-
在添加完
dlib/all/source.cpp
后,重新编译的时候可能会遇到新的问题,如下:***\dlib\all\source.cpp : fatal error C1128: 节数超过对象文件格式限制: 请使用 /bigobj 进行编译
该问题按照下图中的方法即可解决。
-
如果是需要加载图片的项目,可能会遇到如下的问题:
You must #define DLIB_JPEG_SUPPORT and link to libjpeg to read JPEG files.
Do this by following the instructions at http://dlib.net/compile.html.Note that you must cause DLIB_JPEG_SUPPORT to be defined for your entire project.
So don’t #define it in one file. Instead, add it to the C/C++->Preprocessor->Preprocessor Definitions
field in Visual Studio’s Property Pages window so it takes effect for your entire application.该问题已被描述很详细,根据下图中的方法即可解决。
若是 DLIB_PNG_SUPPORT ,则处理方式与上面的一样。 -
如果碰到下面的问题
\dlib\dlib-19.4\dlib\image_loader\jpeg_loader.cpp(17): fatal error C1083: 无法打开包括文件: “jpeglib.h”: No such file or directory
则只需要按照5中的方法添加 DLIB_JPEG_STATIC 即可。