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

时间:2017-04-20 20:24:06

标签: c++ debugging dlib

我正在为项目尝试dlib 19.1

我使用cmake构建了所有示例,并且我还使用VS 2013构建dlib以获取静态lib。所以我有我的Install文件夹,其中创建了dlib。我使用与cmake创建的相同的.sln在Release和Debug中编译。所以到现在为止,没问题。

接下来,我进入了我的项目(一个控制台项目),我指向了header和lib(发布和调试)。请注意,此项目仅包含一个Main.cpp,它从我自己的其他项目库中调用不同的函数,并且main也从dlib调用面部标记检测。

因此,使用我创建的dlib.lib在Release中编译项目没有任何问题。但是当使用 debug dlib.lib 并尝试在调试模式下启动我自己的项目时,我收到以下错误:

  

错误LNK2001:未解析的外部符号   _USER_ERROR__missing_dlib_all_source_cpp_file__OR__inconsistent_use_of_DEBUG_or_ENABLE_ASSERTS_preprocessor_directives _

有什么问题吗?当我在调试中查看cmake .sln中的预处理器时,我有_DEBUG,也在我自己的项目中。

1 个答案:

答案 0 :(得分:1)

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

mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=c:\prj\dlib_build_release
cmake --build . --target install --config Release
cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=c:\prj\dlib_build_debug
cmake --build . --target install --config Debug

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