将VS2017从15.4.1升级到15.5.1导致构建错误
Upgrading VS2017 from 15.4.1 to 15.5.1 resulted in build error
我正在使用以下工具/版本进行编程:Windows 10/vs2017 Professional/c
升级到15.5.1后,我收到以下错误:
MIDL2338:开关是矛盾的-NO_ROBUST vs. -TARGET
Microsoft编译器错误描述列表说:编译IDL文件时,您不能同时使用/OSF和/MS_EXT命令行交换。
我的项目属性中没有指定这些开关。
我试图降级至15.4.1,但发现除非是N-1,否则不可能还原为旧版本。这是基于我阅读的许多博客(包括堆栈溢出)。
我已经撞墙了,直到我弄清楚这个开关问题。
。您的帮助将不胜感激。
我刚刚遇到了同一问题,但是幸运的是,我确实可以访问另一个较旧的安装。
这是VS 2017下的命令行15.4.4:
/iid "RtdHandleServer_i.c" /env win32 /h "RtdHandleServer.h" /W1 /char signed /tlb "Win32ReleaseRtdHandleServer.tlb" /Oicf /D "NDEBUG" /no_robust /nologo /proxy "RtdHandleServer_p.c"
这是在VS 2017下更改为15.5.1:
/iid "RtdHandleServer_i.c" /env win32 /h "RtdHandleServer.h" /W1 /char signed /tlb "Win32ReleaseRtdHandleServer.tlb" /Oicf /target "NT60" /D "NDEBUG" /no_robust /nologo /proxy "RtdHandleServer_p.c"
因此,所有已更改的都是新参数/target" nt60" 已被添加为新的默认值。
我看上去好像有两种解决方案:
- 在IDL文件的属性页面对话框中,转到配置属性>Midl>高级,并清除"最低目标系统"的价值。
- 摆脱-no_robust标志。根据文档(https://msdn.microsoft.com/en-us/library/windows/windows/aa367349(v=vs.85).aspx?f=255&ampperror = -2147217396)>
;如果生成的存根需要在Microsoft Windows NT,Windows 95/98或Windows ME上运行,则必须使用/no_robust命令行开关禁用/可靠功能。
在摆脱错误方面,更改对我有用,但是第一种方法的影响最小。
ps。我认为MS错误描述(https://msdn.microsoft.com/en-us/library/windows/desktop/aa366756(v=vs.85)9.aspx?f=2555& mmspperror = -2147217396)在这种情况下,可能是不正确的。您看到的原始错误消息是指两个特定标志/no_robust 和/target ,而不是/osf 和/ms_ext 。
注意: MIDL编译器/robust
开关执行以下操作(Microsoft Docs Midl Compiler:/robust Switch)
使用
/robust
开关生成允许的其他信息网络数据表示(NDR)引擎以执行运行时错误检查动态阵列,工会和外部的相关论点DCOM应用中的接口指针。/健壮的开关仅为在Windows 2000和更高版本的Windows下可用。
为了删除/no_robust
标志(如果生成的存根不需要在Microsoft Windows NT,Windows 95/98或Windows ME上运行),只需删除
<ValidateAllParameters>false</ValidateAllParameters>
.vcxproj
文件中的<Midl>
元素下的条目。
来源:ref
- Agora.io 虚幻引擎插件构建错误
- 尝试将 boost::stacktrace 添加到 CMake 项目时出现构建错误
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- 组件上的虚幻引擎可蓝图UFUNCTION会导致构建错误
- 尝试构建 xerces c++ 解析器。Netbeans 和命令行构建错误未定义对"xercesc_3_2..."的引用
- pair的两个构造函数几乎相同,为什么不生成构建错误?
- 发生 Qt5.11 应用插件构建错误:信号和插槽参数不兼容
- Visual Studio 2017 中的 Tesseract 3.05 构建错误
- Eclipse 构建错误在默认的 hello world 上
- C++ CMake 构建错误:未定义对"boost::throw_exception(std::exception const&)"的引用
- 在 solaris 上增加 1.64 构建错误
- xgboost 构建错误:参数包未扩展为"..":
- 使用GCC 4.8构建错误:数组用作初始化器
- 编译 Java TD 客户端时出现构建错误
- 如何修复安卓工作室中的NDK构建错误
- C++ Cassandra 构建错误
- 我在 MinGW 和 VS 代码"g++ not recognized as a cmdlet..."时遇到构建错误
- Microsoft Visual Studio 2008,版本9.0.30739.1 SP,DLL构建错误
- 使用PPConsul(C 的领事客户端)构建错误的C 项目
- WURFL nginx 构建错误