VS2017编译项目,报错如下:
2>c1xx : warning C4199: C++/CLI、C++/CX 或 OpenMP 不支持两阶段名称查找;请使用 /Zc:twoPhase-
2>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.16.27023\include\msclr\marshal.h(222): error C3861: “_This_conversion_is_not_supported”: 找不到标识符
2>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.16.27023\include\msclr\marshal.h(224): note: 参见对正在编译的 类 模板 实例化 "msclr::interop::error_reporting_helper<_To_Type,_From_Type,false>" 的引用
2>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.16.27023\include\msclr\marshal.h(233): error C3861: “_This_conversion_requires_a_context”: 找不到标识符
2>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.16.27023\include\msclr\marshal.h(235): note: 参见对正在编译的 类 模板 实例化 "msclr::interop::error_reporting_helper<_To_Type,_From_Type,true>" 的引用
项目背景:
C++项目,打开了/clr选项,使用了.net里面的dll库
分析:
two-phase name lookup应该是一个关于C++模板的功能,错误提示应该是说它不支持C++/CLI, C++/CX, or OpenMP。
我的工程里面主要是c语言的代码,引用了一些C++的类库,然后并没有使用C++的模板,所以我把two-phase name lookup关闭就好了。
解决步骤:
项目->属性->C/C++->语言->符合模式:否