Visual Studio 2015:C++ 代码分析错误 C1253,无法加载模型文件“res://mspft140.dll/300”

Posted

技术标签:

【中文标题】Visual Studio 2015:C++ 代码分析错误 C1253,无法加载模型文件“res://mspft140.dll/300”【英文标题】:Visual Studio 2015: C++ code analysis error C1253, unable to load model file 'res://mspft140.dll/300' 【发布时间】:2016-09-02 19:15:01 【问题描述】:

Visual Studio 2015 Community update 3,尝试C++代码分析功能。设置如下:

solution properties > code analysis settings > [all configurations] [all platforms] : microsoft native recommended settings project properties > code analysis > [all configurations] [all platforms] : microsoft native recommended settings

每当我运行analyze > run code analysis on solution 时,我总会得到一个c1xx : fatal error C1253: Unable to load model file 'res://mspft140.dll/300'。这发生在每个新项目或现有项目中。 MSDN 是 not particularly helpful 关于这个的。

字符串是res protocol,所以我检查了提到的dll是否在正确的位置(实际上有两个,在c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64),并用resedit打开它们>。两者都包含一个名为300 的XML 资源,所以我看不出VS 无法加载它的任何原因。重置设置没有帮助,完全卸载并重新安装(浪费了半天)也没有。

我在VS中运行代码分析时,也用[Path] [contains] [mspft]过滤器运行了procmon,但文件系统结果只有SUCCESSFILE LOCKED WITH ONLY READERS,即seems to be ok。

有人遇到过这个错误吗?有没有人推测它的原因?


更新:在仔细查看了使用不同过滤器的更多 procmon 捕获后,我发现cl.exe 尝试打开此注册表项值:HKCR\PROTOCOLS\Handler\res\CLSID。显然,它会查找错误输出中提到的 res 协议的处理程序 - 并且找不到,而 res 键的许多兄弟姐妹指的是一些有效的处理程序,例如,http 键具有 @987654339 @79eac9e2-baf9-11ce-8c82-00aa004ba90b 的值。我想我现在的任务是弄清楚 res CLSID 是什么意思。

【问题讨论】:

禁用您的反恶意软件产品并重试。 它已经被禁用,但感谢您的建议。 【参考方案1】:

我对@9​​87654321@ 协议处理程序的假设是正确的。正确的HKCR\PROTOCOLS\Handler\res\CLSID 值是3050f3bc-98b5-11cf-bb82-00aa00bdce0b(指的是C:\Windows\System32\mshtml.dll)。由于某种原因,我的注册表丢失了它;一旦我添加了值,代码分析就开始工作而没有错误。

我希望这对某人有所帮助,尽管我相信这个错误非常罕见。

【讨论】:

以上是关于Visual Studio 2015:C++ 代码分析错误 C1253,无法加载模型文件“res://mspft140.dll/300”的主要内容,如果未能解决你的问题,请参考以下文章

C++ Visual Studio 2015“非标准语法;使用 '&' 创建指向成员的指针”

如何在 Visual Studio 2015(用于 C++)中仅禁用 SIMD 自动矢量化优化?

C++学习---Visual Studio 2015 C++使用教程

Visual Studio 2015 没有 cl.exe

Visual Studio 2015 不能使用 C++

从 Visual Studio 2013 转换到 Visual Studio 2015 的问题