【问题标题】:LoadLibrary(xx.dll) with error 126LoadLibrary(xx.dll) 错误 126
【发布时间】:2016-03-07 09:59:08
【问题描述】:

我在基于 x64 的处理器中使用 Visual Studio 2010。

我收到错误LoadLibrary(_T("xx.dll")) with 126.

我尝试了依赖 Walker 来找出所有 .dll 和模块、函数依赖项。它表明一切都很好。

实际上旧代码在 32 位操作系统中运行良好并已编译。转64位操作系统后,出现错误。

我将所有 .dll 库与 .exe 文件复制到同一目录中。

32位编译的xx.dll和64位执行后是否有冲突?

非常感谢您的任何建议和建议。

【问题讨论】:

  • 您现在在 64 位应用程序中使用旧的 32 位 DLL?
  • @Youka 感谢您的快速回复。是的,我已经在我的 64 位应用程序中复制了所有旧的 DLL。
  • 这是一个简单的“找不到文件”错误,我们无法为您找到。启用加载程序快照或使用 SysInternals 的进程监视器来了解问题所在的 DLL。
  • @HansPassant 谢谢。我使用了依赖walker,它显示了找到的每个.dll 和模块。这就是为什么我现在不知道的原因。
  • 挺没用的,很久没维护了。除非您使用其 Profile 选项,否则对您诊断 LoadLibrary() 故障几乎没有帮助。这就是我不推荐它的原因。

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


【解决方案1】:

64 位应用程序无法加载 32 位 DLL,WOW64(64 位上的 Windows 32 位仿真)仅适用于生成进程/可执行文件,而不适用于运行时发生的情况。已在 SO 上多次回答,例如 here

您需要编译/获取 DLL 的 64 位版本。

【讨论】:

  • 谢谢。我删除了所有旧的 .dll 并删除了所有与 32 位相关的代码。终于成功了。
  • 所以请接受这个答案作为正确的答案。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2010-11-06
相关资源
最近更新 更多