问题描述
我试图用C ++编写一个为Linux编写的程序的Windows版本。为了程序是线程安全的,我在Linux版本中使用您是否定义了 _WIN32_WINNT 和 WINVER 之前 #include< windows.h> ?
这是必需的,以包含仅在Windows的更高版本中添加的事物的定义。对于条件变量,您需要将这些条件变量设置为至少 0x0600 ,因为条件变量在V6中是新的(即Vista / 2008)。
请参阅
I am trying to make a windows-version of a program written for Linux, in C++. For the program to be thread-safe, I use pthread_cond_t and pthread_cond_wait in the Linux version. These functions use a mutex to help make sure that the waiting thread is actually waiting.
I found that CONDITION_VARIABLE may do the trick in Windows, however I can't figure out why it wont compile. I get the error "error: 'CONDITION_VARIABLE' does not name a type" even though all relevant headers are included, as far as I can tell. I tried copy-pasting the code on http://msdn.microsoft.com/en-us/library/ms686903%28v=VS.85%29.aspx , which wont compile either. I am using GCC.
Any ideas on how to compile this? or any alternate approaches, which doesn't involve condition_variables?
Did you define _WIN32_WINNT and WINVER before #include <windows.h>?
This is necessary to include definitions for things only added in later versions of Windows. For condition variables you need to set these to at least 0x0600 as condition variables were new in V6 (ie. Vista/2008).
See http://msdn.microsoft.com/en-us/library/aa383745%28VS.85%29.aspx
这篇关于CONDITION_VARIABLE在窗口中;不会编译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!