MS C++ 2010和mspdb100.dll

62

微软的C++编译器和链接器似乎与mspdb100.dll有一种奇怪的关系。当从IDE中运行时,编译器和链接器自然工作正常。但是当从命令行中运行其中任意一个时,我会遇到错误。

没问题,我找到了DLL并将其复制到目录中。现在编译器可以正常工作,但链接器却死了。

我可以通过将"%VS10%\Common7\IDE"添加到我的PATH来解决此问题,但由于各种原因(性能、系统纯度、强迫症等),我不想这样做。为什么这个设置如此敏感,还有其他什么方法可以解决它吗?


请参见:https://dev59.com/vHNA5IYBdhLWcg3wBo5m - Michael Paulukonis
1

Ctrl+c对话框,以便在谷歌搜索时找到此条目:

cl.exe - 无法定位组件

该应用程序无法启动,因为找不到mspdb100.dll。重新安装该应用程序可能会解决此问题。

确定

- thomasa88
8个回答

73

首先,尝试从当前的shell中运行 path\to\VC\bin\vcvars32.bat。这可以确保你的命令行设置与IDE设置相匹配。

这不是一个永久性的解决方案--每次启动新的shell时都需要这样做。

你可能还可以找到一些方式将.bat中的所有内容永久添加到环境变量中,但是...就像你所问的,为什么MS安装程序没有自动完成呢?


批处理文件告诉你,环境变量VS100COMNTOOLS的定义为空(或没有定义)。这是批处理文件外部的问题。你是否安装了VS2010? - Michael Paulukonis
又有一个关于VS100COMNTOOLS未定义的报告(不同的上下文),请参见http://stackoverflow.com/questions/4045780/resharper-property-vs100comntools-is-not-defined。 - Michael Paulukonis

28
将Microsoft Visual Studio 10.0\Common7\IDE添加到你的路径中,这个问题就不会再存在了。你将能够在不必每次运行这个愚蠢的批处理文件的情况下进行构建。

从原始问题中,“我可以通过将“%VS10%\Common7\IDE”添加到我的PATH来解决问题,但由于各种原因[...],我不想这样做。” - Michael Paulukonis
1
在我的构建脚本中,我刚刚添加了以下行: set "PATH=%PATH%;%VS100COMNTOOLS%..\IDE" - grundic
1
Michael,既然这是解决问题的唯一方法,那么这也是唯一的真正答案。vcvars32.bat文件只是为您执行此操作。 - monokrome

6
我注意到当我安装了Microsoft Visual Studio 2010 Express之后,在开始菜单的"Microsoft Visual Studio 2010 Express"文件夹下,有一个名为"Visual Studio Command Prompt (2010)"的链接,打开后会设置所有必要的环境变量,这样你就不需要编辑PATH变量了。
这个快捷方式运行以下命令:
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86
如果使用这个快捷方式不方便,也许你可以从研究这个 .bat 文件中获得一些有用的东西?

2

我知道这可能有点过时了,但如果有人想要从命令行运行编译器,以下是我为了使其运行而做的操作。

我使用的是Win7 32位和Visual Studio 2010。我在C:\Windows中创建了一个小批处理文件。以管理员身份打开cmd提示符,然后输入以下内容:

copy con cl.bat

@"C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32" %1 %2 %3 %4 %5 %6
@"C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\cl" %1 %2 %3 %4 %5 %6

然后按下F6并再次按回车键。
显然,您将使用的路径是安装Visual Studio的路径。
现在,您可以从Windows中的任何位置或目录使用工作命令行编译器。要测试此功能,请转到桌面并以管理员身份打开cmd提示符;我喜欢使用Ctrl+Shift和右键单击,然后选择在此处打开命令提示符。 在命令提示符中键入“cl”(不带引号)并按Enter键。您将看到一条消息“为使用Microsoft Visual Studio 2010 x86工具设置环境”。
键入“cl”并再次按Enter键,您将获得编译器信息。您已准备好进行编译。
享受吧!

2
我遇到了同样的错误,因为我们在 x64 系统上安装了 vs2010 x86 版本...
打开两个文件夹:
C:\Windows\Microsoft.NET\Framework\v4.0.30319 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
你会找到两个 cvtres.exe。右键单击,选择属性,然后详细信息。删除旧版本,cmake 就可以正常工作了。 希望这可以帮到你。
感谢“zhoudongao” @ http://bbs.csdn.net/topics/390121452?page=1#post-394768226

1

也许这会对某些人有所帮助...

我通过添加以下内容解决了这个问题

PATH += %PATH_TO_VS_IN_YOUR_SYSTEM%/Common7/IDE;

转到nvcc.profile文件。

当然,%PATH_TO_VS_IN_YOUR_SYSTEM%是您系统中Visual Studio的实际路径。


1

1
如果你试图直接从Windows cmd.exe运行工具,则需要通过运行vcvars32.bat文件来设置环境变量。相反,您可以运行Visual Studio命令提示符,它会自动运行vcvars32.bat。如果你仍然有问题,那么这肯定是著名的路径变量问题。
请确保环境中的"path"变量已添加"c:\windows\system32\"值,因为.bat文件需要它来配置VC工具。
这种问题通常发生在机器上安装了许多开发平台的情况下,这可能会改变路径变量。
检查这个链接:https://schrievkrom.wordpress.com/2011/01/25/error-cannot-determine-the-location-of-the-vs-common-tools-folder/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接