C1189 #error: <mutex> is not supported when compiling with /clr or /clr:pure
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 代码。由于 <mutex>
“使用 /clr
编译时不支持 ”,需要它的代码需要移动到单独的 .cpp
文件集中进行编译没有 /clr
。这可以通过向项目添加一个新的 .cpp
文件,然后更改 属性 Pages / Configuration Properties / C/C++ / General / Common Language RunTime Support 来完成 设置从 /clr
到 none 对于特定的 .cpp
文件(not整个项目)。
必须将代码移动到一个单独的文件集,以便在没有完整 /clr
的情况下进行编译。仅将代码放在使用 /clr
编译的文件中的 #pragma unmanaged
块中是行不通的。
如果项目使用预编译头,新文件必须设置为不使用预编译头,因为那个应该不 在使用和不使用 /clr
构建的对象之间共享。
我有一个包含托管 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 代码。由于 <mutex>
“使用 /clr
编译时不支持 ”,需要它的代码需要移动到单独的 .cpp
文件集中进行编译没有 /clr
。这可以通过向项目添加一个新的 .cpp
文件,然后更改 属性 Pages / Configuration Properties / C/C++ / General / Common Language RunTime Support 来完成 设置从 /clr
到 none 对于特定的 .cpp
文件(not整个项目)。
必须将代码移动到一个单独的文件集,以便在没有完整
/clr
的情况下进行编译。仅将代码放在使用/clr
编译的文件中的#pragma unmanaged
块中是行不通的。如果项目使用预编译头,新文件必须设置为不使用预编译头,因为那个应该不 在使用和不使用
/clr
构建的对象之间共享。