2017-04-24 51 views
1

我最近添加了dlib 19.1到我的項目在Visual Studio 2013中。我能夠運行編譯庫沒有問題,運行該示例,也創建我自己的控制檯應用程序,並使其工作正好。dlib和窗口功能衝突

但整合DLIB到我的項目的時候,我最近遇到的當前錯誤:

Error 14 error : identifier "WaitForSingleObject" is undefined \include\dlib\threads\threads_kernel_1.h 120

有在threads_kernel_1.h

我期待類似這樣的50個錯誤,所有所有的項目屬性,並沒有發現任何可疑的東西比我包含dlib的示例項目。

回答

1

標識符「WaitForSingleObject」是通過在您的應用程序中包含<windows.h>標頭定義的。這個頭文件包含在\ include \ dlib \ threads \ threads_kernel_1.h中,但是你的機器出了問題

你可以嘗試使用這個獨立於dlib的函數,並檢查它是否在你的應用程序中首先運行。 你也可以明確#include <windows.h>在你的CPP文件的頂部

你有任何自定義「windows.h」文件在你的應用程序,可能是一些命名衝突?

此外,我可以推薦你生成由CMake的視覺Studion項目,然後用它從IDE

+0

有在我的項目沒有自定義「WINDOWS.H」。我沒有得到你的意思:「你可以嘗試使用這個函數獨立於dlib和...」? – Vuwox

+0

您可以嘗試從concole應用程序調用WaitForSingleObject函數。會產生錯誤嗎?如果是的話 - 包含路徑和文件的東西,如果沒有 - 在dlib文件中的某些東西包括命令或可能是dlib已損壞 – Evgeniy

+0

我目前正在測試。所以我沒有包含任何與dlib相關的東西。可以編譯。接下來,我在我的cpp中添加一個'GetCurrentThreadId()'(比較'WaitForSingleObject'更容易調用)。正如你所說,我仍然對'GetCurrentThreadId'沒有定義。然後,我將「Windows.h」添加到該cpp中,並且錯誤消失,可以編譯。但是,當我重新添加頭到dlib調用。 'GetCurrentThreadId'仍然沒有定義。但是我注意到沒有'Windows.h',我有50個錯誤,只有25個錯誤。在其他地方可能有一個'Windows.h'問題? – Vuwox