【问题标题】:Failing to distribute a C++ compiled software未能分发 C++ 编译软件
【发布时间】:2016-04-30 18:41:47
【问题描述】:

几天前我问了一个与该主题类似的问题,但我仍然未能找到解决此问题的方法

我在 windows 7 x86 pc 上使用 Visual c++ 2013 用 C++ 构建了一些软件, 而且我实际上在重新分发我的软件方面都失败了...... 我试过在三台不同的电脑上重新分发它

  • 一台运行 Windows 10 x64 的电脑
  • 一台运行 Windows 7 x64 的电脑
  • 一台运行 Windows 7 x86 的电脑

当尝试在目标计算机上运行该软件时,我总是遇到同样的错误: 缺少 msvcp120.dll 或 msvcr120.dll

我尝试在所有目标计算机上安装 Visual c++ 重新分发, 也没有帮助,还尝试手动将丢失的 dll 添加到目标计算机的系统文件中,但未能解决我的问题 它只是创建了一个新错误

“应用程序无法正确启动 (0x00007b)”

老实说,我不知道如何解决这个问题……如果有人能想出解决这个问题的办法,我会很高兴的。

另外,如果这里有这方面经验的人能给我一些关于重新分发用 Visual C++ 编写的程序的提示,那就太好了

在此先致谢并致以最诚挚的问候, 伊泰。

【问题讨论】:

  • 您正在复制错误的文件。肯定是因为你是从 c:\windows\system32\ 而不是 c:\windows\syswow64 复制它们的。就run this
  • 正如我已经说过的,“我已经尝试安装可视化 c++ 重新分发”并且它什么也没做......,你从错误的目录复制它们是什么意思? @HansPassant

标签: c++ windows visual-studio


【解决方案1】:

您可以使用静态链接运行时而不是动态链接运行时构建您的应用程序(请参阅此处:https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx),这样就不需要这些 dll。

【讨论】:

  • 啊,对不起,我缺乏理解,但我不知道你链接我的指南有什么帮助......你能更具体一点吗?无论如何谢谢:)
  • msvcp120.dll 和 msvcrt120.dll 链接到当您使用动态版本的运行库时。默认情况下,这是启用的。您可以更改此设置,以便您的应用程序静态链接到运行时库。然后它将在您的应用程序中包含此运行时代码,然后不需要您将这些 dll 与您的应用程序一起分发。转到项目属性(鼠标右键单击项目),选择 C/C++ 代码生成。对于运行时库,选择 /MT 或 /MTd(不带 dll)。
  • 啊,好吧,但我不应该添加要链接的 dll 吗?
  • 不,就像您不指定运行时 dll 本身一样,您也不需要指定静态版本。
  • 这实际上解决了我的问题,非常感谢...您能否向我解释一下幕后发生的事情,dll与链接的作用是什么?以及“运行时”是什么意思dlls”,程序不应该只依赖于它的处理器兼容的代码,以及在所有三种情况下都应该兼容的操作系统(所有目标电脑都是 Windows 7+)
猜你喜欢
  • 1970-01-01
  • 2014-08-09
  • 2018-09-17
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多