簡體   English   中英

C1189 #錯誤:<mutex> 使用 /clr 或 /clr:pure 編譯時不支持</mutex>

[英]C1189 #error: <mutex> is not supported when compiling with /clr or /clr:pure

我有一個 C++ 庫,其中包含托管 C++ 類和非托管 C++ 類,因此該庫是在 /clr 支持下編譯的。 我需要在非托管端進行一些線程安全鎖定,但如果我包括在內,我會遇到編譯器錯誤:

C1189 #error: <mutex> is not supported when compiling with /clr or /clr:pure

我該如何解決這個問題? 花了幾個小時搜索,但只找到了非常古老的信息。 使用 Visual Studio 2017 和 C++11 語言標准。

混合模式項目可以包括非托管 C++ 和托管 C++/CLI 代碼。 由於使用/clr編譯時不支持<mutex> ,因此需要將需要它的代碼移到單獨的.cpp文件中,以便在不使用/clr的情況下進行編譯。 這可以通過將新的.cpp文件添加到項目中來完成,然后將屬性頁/配置屬性/C/C++/常規/公共語言運行時支持設置從/clr更改為特定.cpp文件(不適用於整個項目)。

  • 必須將代碼移至單獨的文件集以在不使用/clr的情況下進行編譯。 僅將代碼放在用/clr編譯的文件中的#pragma unmanaged塊中是行不通的。

  • 如果項目使用預編譯的頭文件,則必須將新文件設置為使用預編譯的 header,因為不應在使用與不使用/clr構建的對象之間共享該文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM