![](/img/trans.png)
[英]Windows Xp - entry point gettickcount64 could not be located kernel32.dll
[英]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.