簡體   English   中英

無法在kernel32.dll中找到過程入口點InitializeConditionVariable

[英]Procedure entry point InitializeConditionVariable could not be located in kernel32.dll

我正在運行生產者消費者問題(使用Windows線程)。它成功編譯但在運行時顯示以下錯誤

過程入口點InitializeConditionVariable無法位於動態庫Kernel32.dll中。

你能分辨出什么是理由嗎?

這是一個僅在Vista及更高版本中可用的API函數。 我猜你在XP上運行這段代碼。

為避免意外使用僅在Windows的更高版本中可用的API函數,您需要定義_WIN32_WINNT宏:

#define _WIN32_WINNT 0x502   // Designed to run on Windows XP SP2 and up
#include <windows.h>

如果您未設置它,則在Windows SDK的更高版本上通常默認為0x600,選擇Vista作為目標操作系統。 順便說一句,你可能不得不放棄條件變量。 您的問題中沒有足夠的細節來提供合適的替代品。 使用互斥鎖的代碼應該不難找到。

InitializeConditionVariable和相關的條件變量API僅在Windows Vista之后可用。 您可以使用Boost.Thread提供適用於Windows XP的條件變量實現。 在我的博客上寫了一篇關於如何將它用於生產者/消費者隊列的文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM