在使用VS 2010 C ++缺少MSVCP100.dll构建exe之后

时间:2010-07-01 23:14:08

标签: visual-c++ visual-studio-2010

我设计了一个不需要安装的应用程序,非管理员可以使用它。我宁愿不会失去这个功能但是当我在其他计算机上使用.exe而不是我编程的那个计算机时,我得到一个错误,即错过的MSVCP100.dll阻止文件执行。

我在这里做错了什么?如何在发布版本中包含该文件?

谢谢!

4 个答案:

答案 0 :(得分:30)

将项目配置为静态链接到C / C ++运行时,而不是链接到运行时DLL:

  • 配置属性| C / C ++ |代码生成|运行时库

为您的调试版本选择多线程(/ MT)(或多线程调试(/ MTd))。

作为替代方案,您应该能够使用http://msdn.microsoft.com/en-us/library/ms235291.aspx中标记为“将Visual C ++库DLL作为私有程序集部署”标题下的技术来获取C / C ++运行时DLL的xcopy部署。我没有尝试过这种技术,因为如果需要xcopy安装本机C ++程序,通常只需要静态链接。

答案 1 :(得分:4)

http://msdn.microsoft.com/en-us/library/ms235299.aspx

分发使用Visual C ++编译的应用程序需要分发应用程序使用的C ++运行时.dll。在您的情况下,我假设您只想分发一个文件夹,请按照指示(针对您的应用进行适当修改):

http://msdn.microsoft.com/en-us/library/dd293565.aspx

或者只是将msvcp100.dll复制到.exe旁边的应用程序目录中,你就可以了。

32位msvcp100.dll位于C:\Windows\SysWOW64\

64位msvcp100.dll位于C:\Windows\System32\

答案 2 :(得分:3)

  

我在这里做错了什么

你所拥有的是地狱。您无意中使用了与之前编译器的动态链接,它在大多数目标系统上发生了恰当的C运行时。 Windows通常包括VC 6 CRT,以及更新的SP甚至VC7& 8 CRT。

当您更改为最新的VC编译器时,大多数系统都不会为您预先安装新的VC运行时。

正如Michael Burr所说,如果您静态链接,可以将“无法安装”恢复。

或者您可以将CRT和清单包含在同一文件夹中,但仍然不需要安装。

或者包含VS2010中的vcredist.exe并安装1次

答案 3 :(得分:1)