【问题标题】:Running 32 bit app on Windows 7 with dependent DLLs在 Windows 7 上运行具有依赖 DLL 的 32 位应用程序
【发布时间】:2011-11-17 12:42:00
【问题描述】:

我正在运行一个简单的 32 位应用程序。它使用 Qt 和其他库。找出清单后,我有一个包含应用程序、清单和依赖 DLL 的文件夹。直接从 USB 记忆棒在 Windows 7 64 位下的目标机器上运行它。将其复制到 D:\ 驱动器上的文件夹中即可。

将其复制到Program files (x86) 下的文件夹中,我得到:

R6034。应用程序试图错误地加载 C 运行时库。

我的可执行文件有一个清单。正如本论坛其他地方所建议的那样,我在文件夹中也有msvc*.dll 的清单。那么,为什么除了它应该在的地方之外,它在任何地方都有效?

【问题讨论】:

  • 您是否考虑过使用静态运行时而不是 DLL?
  • 本。是VC2008。哈利,是的,我有,但我希望不要去那里。在我看来,我不明白关于 Windows 7 64 位的一些东西。构建为 32 位的相同应用可以完美运行。
  • 我认为如果你把它放在 32 位机器上的 Program Files 中它可以工作?哪个版本的 Visual Studio 和哪种语言?
  • 只是为了确保,使用进程监视器来确认您的 MSVC DLL 副本正在加载。
  • Harry,它是在 VS2008 下构建的带有 Qt 的 C++。我会试试你的建议。

标签: windows qt dll 64-bit runtime.exec


【解决方案1】:

Dependency Walker 在这里会有所帮助 - 在您的 .exe 上运行它,当它处于工作状态时,当它不是时,并比较您的应用程序尝试使用的 C 运行时库的位置(我相信它应该是 msvcrt.dll 如果您正在发布,msvcrtd.dll 如果您不是),希望您能够发现不同之处。

我不确定您可以从那里去哪里 - 也许将正确版本的 dll 部署到与您的 .exe 相同的文件夹中?

【讨论】:

  • sjwarner - 谢谢。我经常使用依赖walker,除了我忽略的通常缺少的ieshims.sll 之外,它没有显示任何问题。我所有的 dll,包括运行时 dll,都部署在与 .exe 相同的文件夹中。
猜你喜欢
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 2013-06-11
  • 2011-03-24
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2011-03-07
相关资源
最近更新 更多