Microsoft.CppCommon.targets(574,5): error MSB6006: "mt.exe" exited with code 31.解决办法

在使用VS编译DLL时遇到Microsoft.CppCommon.targets(574,5): error MSB6006: ""mt.exe"" exited with code 31的问题。解决方法是将项目的Manifest Tool属性中的""Embed Manifest""设置为No,避免编译错误。错误原因是与manifest文件生成过程中的MT.EXE工具有关。" 101597686,8507441,Python实现感知机:从原始到对偶形式,"['机器学习', 'Python编程', '模型实现', '数据科学', '基础算法']

一、问题出现

  用VS编译动态库dll文件的时候,ReBuild过程中会遇到Microsoft.CppCommon.targets(574,5): error MSB6006: "mt.exe" exited with code 31.这个问题,略坑爹啊,找了半天都是英文的解决办法,也没解释清楚,于是记录分享。

具体错误如下

1>  Generating code
1>  Finished generating code
1>  myRecast1.vcxproj -> C:\Users\Lufeng\Documents\Visual Studio 2010\Projects\myRecast1\x64\Release\recast.dll
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(574,5): error MSB6006: "mt.exe" exited with code 31.
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.57
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========


二、解决办法

  设置project的属性Manifest Tool,把 "Embed Manifest" 设置成No,具体操作如图:


<think>好的,我现在要帮用户解决error MSB6006问题,特别是涉及Microsoft.CppCommon.targets和cmd.exe退出代码-1073741515的情况。首先,我需要回忆一下这个错误的一般原因和可能的解决方案。根据用户提到的引用,特别是引用[1]提到操作系统问题导致无法编辑空bat文件,这可能与环境变量或系统路径有关。 首先,错误MSB6006通常发生在Visual Studio编译过程中,当调用的外部工具(如cmd.exe)意外退出时。退出代码-1073741515转换成十六进制是0xC0000135,这通常意味着缺少依赖的DLL文件,或者系统路径配置错误,导致无法找到必要的组件。 接下来,我需要考虑可能的原因。根据引用[1],用户可能遇到了操作系统层面的问题,比如系统文件损坏或权限问题。此外,引用[2]提到在构建MySQL等软件时遇到bison.exe的m4参数错误,这可能涉及到构建工具链的问题,比如GNU工具是否正确安装。引用[3]中的cmake安装可能相关,因为构建过程中可能依赖cmake。引用[4]的node-sass安装问题可能涉及环境变量或路径配置。 可能的解决方案步骤包括: 1. 检查系统环境变量中的Path是否包含必要的路径,比如System32目录,确保cmd.exe和相关DLL能被正确访问。如果System32不在Path中,可能导致cmd.exe找不到依赖项。 2. 使用Dependency Walker或类似的工具检查cmd.exe依赖的DLL是否存在,是否有损坏。特别是检查是否有防病毒软件或第三方程序拦截了DLL加载。 3. 执行系统文件检查(sfc /scannow)和DISM命令修复系统映像,解决可能的系统文件损坏问题。 4. 重新安装Visual Studio的C++工具链,确保所有必要的构建组件正确安装。可能还需要更新Visual Studio到最新版本。 5. 检查项目中的自定义生成步骤或预链接事件,是否有指向无效或空bat文件的情况,如引用[1]中的JavaScriptCorePreLink.cmd为空,导致cmd执行失败。这种情况下,应确保这些脚本存在且内容正确。 6. 以管理员权限运行Visual Studio,排除权限问题导致的访问限制。 7. 检查第三方库或工具链是否正确安装,如cmake、bison等,路径是否正确配置。引用[2]和[3]中的问题可能与构建工具链有关,需要确保这些工具在Path中,并且版本兼容。 8. 创建新的用户账户测试,排除用户配置文件损坏的可能性。 在整理这些步骤时,需要确保逻辑清晰,逐步排除可能的原因。同时,需要参考用户提供的引用,尤其是引用[1]中提到的空bat文件问题,这可能是关键点。用户的问题可能与预链接步骤中的cmd调用失败有关,所以应重点检查相关脚本文件是否存在、是否为空,以及是否有权限执行。</think>关于MSB6006错误中cmd.exe退出代码-1073741515的解决方案,该错误通常与系统环境配置或依赖项缺失相关。以下是分步骤排查方案: **1. 检查系统环境变量** - 验证Path环境变量是否包含$C:\Windows\System32$,缺少该路径会导致cmd.exe无法加载依赖的DLL - 在CMD执行`echo %PATH%`查看结果,若缺少系统目录需手动添加[^1] **2. 依赖项验证** - 使用Dependency Walker分析cmd.exe的依赖链 - 重点关注是否缺失`MSVCR120.dll`、`KERNEL32.dll`等核心DLL - 典型错误模式:防病毒软件误删DLL或第三方程序覆盖系统文件 **3. 系统完整性修复** ```bash sfc /scannow # 系统文件检查 DISM /Online /Cleanup-Image /RestoreHealth # 修复系统映像 ``` **4. 编译器环境重置** - 通过Visual Studio Installer执行"修复"操作 - 重点勾选"MSVC v143构建工具"和"Windows SDK"组件 - 示例修复路径:$C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC$ **5. 预链接脚本检查** - 定位到错误提示中的JavaScriptCorePreLink.cmd文件 - 验证文件编码应为ANSI,换行符为CRLF - 空文件问题需重新生成有效脚本,或暂时添加`exit 0`占位[^1] **6. 权限验证** - 以管理员身份运行VS开发者命令提示符 - 执行`where cmd.exe`确认返回值为$C:\Windows\System32\cmd.exe$ **典型误配置案例**: 当第三方程序(如某些开发工具)将自身路径插入系统PATH变量开头时,可能导致: $$ PATH=C:\BadPath;C:\Windows\System32;... $$ 此时系统会优先从错误路径加载dll文件,建议调整PATH顺序。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值