在编译VS 2012 C ++项目时,致命错误无法运行'mt.exe'

时间:2013-09-29 15:12:11

标签: visual-c++ visual-studio-2012 build

我将Visual Studio升级到VS Professional 2012.

构建旧的Visual C ++项目导致错误:

LINK:致命错误LNK1158:无法运行'mt.exe'

将带有mt.exe的文件夹放入路径中没有帮助 目前我在文件夹C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Bin \ x64

中使用mt.exe

2 个答案:

答案 0 :(得分:3)

在链接器中将“生成清单”设置为“否”。这有帮助

答案 1 :(得分:0)

fatal error LNK1158: cannot run 'mt.exe' 所述,有时关闭清单生成不是一种选择,因为人们实际上是在使用清单。 在这一点上,人们又回到解决实际问题。

实际问题的一个原因是错误的可执行搜索路径。 我个人曾经在项目文件(项目设置中的 VC++ 目录 → 可执行目录)中有一个 $(ExecutablePath) 设置,该设置产生了一个可执行搜索路径,其中一个路径名不是有效的目录名。 路径名在其目录名组件之一中有一个冒号(由另一个变量的前缀 ..\..\ 引起,该变量碰巧包含带有驱动器号的绝对路径名,而不是预期的相对路径名)。

在一个合理的世界中,仅由错误/丢失目录引起的路径搜索错误会导致路径名被跳过,并且搜索继续到搜索路径中的下一个路径名。 相比之下,link 失败并出现此错误(当 midl 试图查找 cl.exe 时确实如此)。 当您查看搜索路径(构建输出级别设置为“详细”)并看到包含 mt.exe 的 SDK 目录就在其中时,这非常令人困惑。 link 似乎并不生活在一个理智的世界里。 ☺

当然,修复是纠正错误的项目设置。