2010-05-17 120 views

回答

4

这是只适用于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作为目标操作系统。顺便说一句,你可能不得不放弃条件变量。您的问题中没有足够的细节来提供合适的替换。代替使用互斥体的代码不应该很难找到。

2

InitializeConditionVariable和相关的条件变量API仅在Windows Vista之后可用。您可以使用Boost.Thread来提供一个适用于Windows XP的条件变量实现。我写了一个article on my blog关于如何将它用于生产者/消费者队列。

相关问题