2010-05-17 4 views

Répondre

4

C'est une fonction API qui est disponible uniquement dans Vista et plus. Je suppose que vous utilisez ce code sur XP.

Pour éviter d'utiliser accidentellement des fonctions API qui ne sont disponibles que dans les versions ultérieures de Windows, vous aurez envie de définir la macro _WIN32_WINNT:

#define _WIN32_WINNT 0x502 // Designed to run on Windows XP SP2 and up 
#include <windows.h> 

Si vous ne définissez pas alors il généralement par défaut 0x600 sur les versions ultérieures du Kit de développement Windows, en sélectionnant Vista comme système d'exploitation cible. Btw, vous devrez probablement abandonner les variables de condition. Il n'y a pas assez de détails dans votre question pour offrir un remplacement approprié. Le code qui utilise des mutex à la place ne devrait pas être difficile à trouver.

2

InitializeConditionVariable et les API de variable d'état associées ne sont disponibles qu'à partir de Windows Vista. Vous pouvez utiliser Boost.Thread pour fournir une implémentation de variable d'état qui fonctionne sous Windows XP. J'ai écrit un article on my blog sur la façon d'utiliser cela pour une file d'attente producteur/consommateur.

Questions connexes