我正在运行生产者消费者问题(使用 windows 线程)。它编译成功但在运行时显示以下错误
无法在动态库 Kernel32.dll 中找到过程入口点 InitializeConditionVariable。
你能说出是什么原因吗
最佳答案
这是一个仅在 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 作为目标操作系统。顺便说一句,您可能不得不放弃条件变量。您的问题中没有足够的细节来提供合适的替代品。使用互斥锁的代码应该不难找到。
关于c++ - 无法在 kernel32.dll 中找到过程入口点 InitializeConditionVariable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2847960/