【问题标题】:Moving my Visual Studio C++ project to 32 bit system from 64 bit将我的 Visual Studio C++ 项目从 64 位移动到 32 位系统
【发布时间】:2012-12-29 00:48:12
【问题描述】:

所以我买了一台新的台式电脑,我决定将我的项目移植到它上面。问题是我的台式机是 32 位的,而我的笔记本电脑是 64 位的。因此,我的笔记本电脑有 SysWOW64,但我的台式机没有。因此,当我尝试运行有关缺少桌面 System32 中的 .dll 的项目时,我遇到了错误。注意:我还从 2010 年升级到 Visual Studio 2012。我想知道如何设置我的项目以在我的台式计算机上查看 System32 而不是 SysWOW64。谢谢!

【问题讨论】:

  • 你是不是要把旧电脑编译的程序运行在新电脑上?或尝试再次重新编译它?如果是后者,您是否尝试过清理解决方案并全部重建?您在新电脑中使用了正确的库 dll 吗?
  • 默认情况下,32 位应用程序将在 32 位操作系统上搜索 System32 中的 .dll,在 64 位操作系统上搜索 SysWOW64。 64 位应用程序将在 System32 中搜索 .dll。问题是,为什么您的应用程序在 32 位操作系统上运行时会寻找 SysWOW64?
  • 我试图在我的笔记本电脑上运行我用 Visual Studio 2010 编译的程序,在我的台式计算机上用 Visual Studio 2012 运行。问题是我认为它试图在 SysWOW64 中找到 .dll只能在 64 位系统(如我的笔记本电脑)上找到,而不是 System32 可以在 32 位系统(如我的台式机)上找到。
  • 第一步是分析您的问题。由于您不知道真正失败的原因,您应该获取Dependency Walker 并加载您的应用程序。它将向您显示哪些模块无法找到,并且 - 最重要的是 - 还列出了它们的依赖项。这应该可以帮助您清楚地了解哪里出了问题。
  • @Tim 更重要的是,这些是 MS Visual C/C++ Debug DLL(注意名称尾部的大 D) ,除非安装了适当的开发工具,否则它不会出现在任何目标客户端系统上。它们也不是由给定的 VS-Runtime 的 stock redist 包安装的。但是,上述 DLL 的 release 版本将存在,并且应该位于正确的位置,前提是它们要么随操作系统一起提供,要么作为 MSI-redist 软件包安装。

标签: c++ visual-studio dll


【解决方案1】:

缺少的 .dll 是使用 Visual Studio 开发的应用程序所需的 Visual C++ 库。它们作为 Visual Studio 安装的一部分进行安装。要在未安装 Visual Studio 的系统上运行应用程序,您必须手动安装它们:


编辑:丢失的 .dll 实际上是 Visual C++ 库的 Debug 版本。这些不能作为单独的下载提供。要解决此问题,可以使用以下选项:

  • 实用:编译一个Release版本并在目标机器上安装上面链接的发布库。
  • 在目标机器上安装 Visual Studio,这也将安装 Debug 库。
  • 作为最后的手段,将 Debug .dll 从安装了 Visual Studio 的计算机复制到客户端计算机。

【讨论】:

  • 他可能会考虑在执行此操作时链接一个 Release 版本,因为他提到的库都是 Debug 依赖项。
  • @WhozCraig 感谢您的评论。我更新了答案以包括满足 Debug 库依赖项的可能解决方案。好电话。
猜你喜欢
  • 2012-05-29
  • 2013-09-17
  • 2013-03-20
  • 2018-09-20
  • 2014-11-05
  • 2017-08-03
  • 2011-03-24
  • 2014-08-13
  • 1970-01-01
相关资源
最近更新 更多