我运行生产者消费者问题(使用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