【发布时间】: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