dlib 和 windows 函数冲突

Posted

技术标签:

【中文标题】dlib 和 windows 函数冲突【英文标题】:dlib and windows function conflict 【发布时间】:2017-09-21 15:38:32 【问题描述】:

我最近在 Visual Studio 2013 中的项目中添加了 dlib 19.1。我能够毫无问题地运行编译库、运行示例以及创建自己的控制台应用程序并使其正常工作。

但是在将 dlib 集成到我的项目中时,我最近遇到了当前的错误:

错误 14 错误:标识符“WaitForSingleObject”未定义 \include\dlib\threads\threads_kernel_1.h 120

类似这个的错误有50个,都在threads_kernel_1.h中

我正在查看所有项目属性,与包含 dlib 的示例项目相比,没有发现任何可疑之处。

【问题讨论】:

【参考方案1】:

标识符“WaitForSingleObject”是通过在您的应用程序中包含<windows.h> 标头来定义的。这个头文件包含在 \include\dlib\threads\threads_kernel_1.h 中,但是你的机器出了点问题

您可以尝试将此函数与 dlib 分开使用,并首先检查它是否适用于您的应用程序。 你也可以在你的 cpp 文件的顶部显式地#include <windows.h>

您的应用程序中是否有任何自定义“windows.h”文件,可能存在命名冲突?

另外我可以推荐你通过 CMake 生成 Visual Studion 项目,然后在 IDE 中使用它

【讨论】:

我的项目中没有自定义的“windows.h”。而且我不明白您的意思:“您可以尝试将此函数与 dlib 和...分开使用”? 您可以尝试从您的 concole 应用程序中调用 WaitForSingleObject 函数。它会产生错误吗?如果是 - 包含路径和文件的东西,如果不是 - dlib 文件中的东西,包括顺序或可能是 dlib 已损坏 我目前正在测试它。所以我没有包括任何与 dlib 相关的东西。可以编译。接下来,我在我的 cpp 中添加了一个GetCurrentThreadId()(与WaitForSingleObject­ 相比更容易调用)。正如你所说,我在GetCurrentThreadId 上仍有未定义。然后,我将Windows.h 添加到该cpp 中,错误消失了,可以编译了。但是当我将标头重新添加到 dlib 调用时。 GetCurrentThreadId 上仍有未定义。但我注意到,没有Windows.h,我有 50 个错误,只有 25 个错误。其他地方可能存在Windows.h 问题,对吗? 发现了。还有另一个需要windows.h 的.cpp。谢谢

以上是关于dlib 和 windows 函数冲突的主要内容,如果未能解决你的问题,请参考以下文章

为 Windows 安装 dlib:“dlib 构建轮失败”和“非零退出状态 1”

是否可以在 Windows 7 上安装 dlib?

无法在 Windows 10 和 Python 3.7 上安装 dlib

无法在Windows 10和Python 3.7上安装dlib

无法在 Windows 10 上安装 dlib

在 Windows 中安装 DLIB、TensorFlow 和人脸识别错误