我運行生產者消費者問題(使用Windows線程)。它編譯成功,但運行它顯示程序的入口點InitializeConditionVariable找不到kernel32.dll中
程序輸入點InitializeConditionVariable不能位於下面的錯誤動態庫Kernel32.dll。
u能告訴會是什麼原因
我運行生產者消費者問題(使用Windows線程)。它編譯成功,但運行它顯示程序的入口點InitializeConditionVariable找不到kernel32.dll中
程序輸入點InitializeConditionVariable不能位於下面的錯誤動態庫Kernel32.dll。
u能告訴會是什麼原因
這是隻適用於Vista和了一個API函數。我猜你是在XP上運行這個代碼。
爲了避免意外使用僅在更高版本的Windows提供的API函數,你要定義_WIN32_WINNT宏:
#define _WIN32_WINNT 0x502 // Designed to run on Windows XP SP2 and up
#include <windows.h>
如果不設置它,然後它通常默認爲0x600在更高版本的Windows SDK上,選擇Vista作爲目標操作系統。順便說一句,你可能不得不放棄條件變量。您的問題中沒有足夠的細節來提供合適的替換。代替使用互斥體的代碼不應該很難找到。
InitializeConditionVariable
和相關的條件變量API僅在Windows Vista之後可用。您可以使用Boost.Thread來提供一個適用於Windows XP的條件變量實現。我寫了一個article on my blog關於如何將它用於生產者/消費者隊列。
無代碼 – 2010-05-17 11:21:49