2017-12-08 7 views
-1

C++/CLIは、プロジェクトが-clr:pureまたはclrフラグを使用してコンパイルされたときにmutexヘッダーをブロックすることが知られています。 エラーが https://social.msdn.microsoft.com/Forums/vstudio/en-US/d4d082ff-ce43-478d-8386-0effed04b108/ccli-and-stdmutex?forum=vclanguageC++ pimpI mutex std :: condicition_variableの使用を妨げる

推奨される解決策はpimpIパターンを使用するように思わここで報告されます。ここをクリック Turn off clr option for header file with std::mutex

他のstd機能を使用しているときに表示される問題があります。たとえば考える std::condition_variable

mutexPimpI _mut; 
std::unique_lock<mutexPimpI> lk(_mut); //Fine std::unique_lock is templated. 
std::condition_variable _gate1; 
_gate1.wait(lk); //Error wait expects std::unique_lock<std::mutex> as argument 

この問題を回避するいずれかの簡単な解決方法/仕事がありますか?

答えて

0

forward declare :: condition_variableで解決しました。 Visual Studioのmutex用コンパイラでの問題は、ヘッダーのみに発生します。 ソースファイルにはまだ機能しませんでした。

0

オブジェクトはロックされないので、recursive__mutexクラスを試すことができます。 https://msdn.microsoft.com/en-us/library/hh921466.aspxも同様です。

+0

-clr:pureフラグを指定してコンパイルすると、mutexを含めることができないという問題があります。 –

関連する問題