无法在kernel32.dll中找到过程入口点InitializeConditionVariable

Sur*_*uri 4 c++ winapi multithreading

我正在运行生产者消费者问题(使用Windows线程).它成功编译但在运行时显示以下错误

过程入口点InitializeConditionVariable无法位于动态库Kernel32.dll中.

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

Han*_*ant 5

这是一个仅在Vista及更高版本中可用的API函数.我猜你在XP上运行这段代码.

为避免意外使用仅在Windows的更高版本中可用的API函数,您需要定义_WIN32_WINNT宏:

#define _WIN32_WINNT 0x502   // Designed to run on Windows XP SP2 and up
#include <windows.h>
Run Code Online (Sandbox Code Playgroud)

如果您未设置它,则在Windows SDK的更高版本上通常默认为0x600,选择Vista作为目标操作系统.顺便说一句,你可能不得不放弃条件变量.您的问题中没有足够的细节来提供合适的替代品.使用互斥锁的代码应该不难找到.