2016-05-21 1 views
0

その私はWINAPIを使用してSleepConditionVariableCS、などの機能を備えています初めてWakeConditionVariableたWaitForMultipleObjectsInitializeConditionVariableのEclipse IDEは、彼らがで宣言されていなかったことを私に言いましたこの範囲。条件変数関数は、このスコープで宣言されていなかった

それらのすべては、おそらく私がExitThreadReleaseSemaphoreのWaitForSingleObjectのような他の機能は問題なく実行されているので、欠点に何を知らない同じlibにWINDOWS.Hに含まれています。

私のC++バージョンには何らかの問題がありますか?それとも、他のライブラリが含まれていますか?

おかげ

+0

Windows 8以降をお使いですか? MSDNによれば、これらの関数の大部分はWindows 8のSynchapi.hに移されました。 –

+1

@MilesBudnek:これは明示的に書かれていませんが、* Windows.h *を含める必要があります(* WinBase.h *または* Synchapi.h *)。これらはSDKの一部(OSではない)なので、OPが使用しているOSはまったく興味深いものではありません。興味深いのは、SDKのバージョンです。 – IInspectable

答えて

4

SleepConditionVariableCS(または他のWindows API呼び出し)のドキュメント、クライアントとサーバのOS最小サポートを示しています。 API呼び出しは、ターゲットプラットフォームの設定に基づいて条件付きで宣言されます。

特定のプリプロセッサマクロを設定することでターゲットプラットフォームを制御できます(詳細はUsing the Windows Headersを参照)。あなたのケースでは、はWindows.h、Windows Vista以降をターゲットとすることを含む、前

#define WINVER 0x0600 

を追加する必要があります。すべてのコンパイル単位で一貫した環境を使用するには、コマンドラインでプリプロセッサマクロを定義するのが一般的です。

関連する問題