调试模式下的dlib静态lib错误



我目前正在为一个项目尝试dlib119.1

我使用cmake构建了所有的示例,还使用VS2013构建了dlib以获得静态lib。所以我有我的安装文件夹,在那里创建dlib。我在Release和Debug中使用cmake创建的.sln进行编译。所以到现在为止,没问题。

接下来,我进入了我的项目(控制台项目),并指向了header和lib(发布和调试)。注意,这个项目只包含一个Main.cpp,它调用与我自己的其他项目库不同的函数,该Main还调用dlib中的人脸地标检测。

因此,我可以使用我创建的dlib.lib在Release中编译我的项目。但是,当使用调试dlb.lib并尝试在调试模式下启动我自己的项目时,我得到了以下错误:

错误LNK2001:未解析的外部符号_用户_ERROR__missing_dlib_all_source_cpp_file_OR__unsistent_use_of_DEBUG_OR_ENABLE_ASSERTS_preprocessor_drectives_

有没有做错什么?当我在调试中使用cmake.sln中的预处理器时,我有_debug,也有我自己的项目。

可能的解决方案是不从.sln文件构建dlib,而是直接通过cmake:

mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=c:prjdlib_build_release
cmake --build . --target install --config Release
cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=c:prjdlib_build_debug
cmake --build . --target install --config Debug

这将编译并安装dlib二进制文件和头文件到c:\prj\dlib_build_release和c:\prj\dlib_build_debug目录中之后,您可以使用这个目录中的dlib编译库

最新更新