我正在使用Dlib
和OpenCV
与C++
Without CMake
在Visual Studio 2015
我试过face_landmark_detection_ex
示例来检测脸部通过使用笔记本电脑摄像头,它工作正常。但我不知道为什么Dlib
是说:164 of 8616 functions (1.9%) were compiled, the rest were copied from previous compilation.
为什么Dlib会编译8000多个函数?
我认为例子非常简单,并且不需要8000+功能工作,我也想知道为什么它需要57页的文件夹,并从库73 Header Files
。
依赖关系层次结构根本不清楚Dlib官方网站上的文档。
注:我已经加入source.cpp
文件到我的项目,因为我是越来越Linker Error
,这可以参考:
在大多数情况下,使用这个库所有你需要做的是什么地方提取它 ,请确保包含dlib文件夹的文件夹位于您的 包含路径中,并最终将dlib/all/source.cpp添加到您的项目中。它 值得注意的是,大多数dlib是“仅标题”,这意味着,在许多情况下,您实际上不必将dlib/all/source.cpp 编译到您的应用程序中。因此,如果您在从项目中排除dlib/all/source.cpp时没有收到链接器错误,那么您不需要它。
修改Source.cpp: - 通过CMake的
#include "../base64/base64_kernel_1.cpp"
#include "../entropy_decoder/entropy_decoder_kernel_2.cpp"
#include "../tokenizer/tokenizer_kernel_1.cpp"
#include "../unicode/unicode.cpp"
#include "../dir_nav/dir_nav_kernel_1.cpp"
#include "../logger/logger_kernel_1.cpp"
#include "../misc_api/misc_api_kernel_1.cpp"
#include "../threads/threaded_object_extension.cpp"
#include "../threads/threads_kernel_1.cpp"
#include "../threads/threads_kernel_shared.cpp"
#include "../timer/timer.cpp"
#include "../gui_widgets/fonts.cpp"
#include "../gui_widgets/widgets.cpp"
#include "../gui_widgets/drawable.cpp"
#include "../gui_widgets/canvas_drawing.cpp"
#include "../gui_widgets/style.cpp"
#include "../gui_widgets/base_widgets.cpp"
#include "../gui_core/gui_core_kernel_1.cpp"
不建议包括CPP文件,这可能是导致问题的原因。当你包含一个文件时,该文件将被有效地粘贴到你的文件中。如果包含cpp文件,那么该cpp文件中的所有定义现在都是文件的一部分。如果那是8000+的功能,那么你什么时候需要它。按照惯例,cpp文件被编译一次,然后根据需要链接。包括h和hpp文件。 – user4581301
以及如何重置编译,以便现在需要的文件可以删除而不会导致错误?因为现在的问题是当我尝试删除'#include'行时,它会导致错误。 –
dlib可能有一个可以链接的.lib文件。如果没有,你应该制作.lib文件([应该是dlib站点的说明](http://dlib.net/compile.html))。 – user4581301