【问题标题】:Application Failed to Initialize Properly应用程序无法正确初始化
【发布时间】:2010-09-10 15:20:19
【问题描述】:

我们有一个使用 vs2010 构建的项目,该项目使用带有托管代码的 .dll。我在 vs2010 中构建了 .dll,目标是 Framework .NET 4.0(也尝试过客户端配置文件),这是 2010 提供给您使用的唯一选项。当我去运行它时,它无法初始化,我认为它有些不兼容......但我不知道它会是什么。有人有什么想法吗?

另外,我下载了一个修补程序,它允许您进行增量托管构建(最初它不是 2010 年的功能)

谢谢!

【问题讨论】:

  • 现在你希望有人能根据这些信息给出答案吗?请描述所有项目(目标平台等)、错误详情、配置文件中的内容等。
  • 另外,增量构建与什么有什么关系?你试过没有它吗?
  • 抱歉,我没有意识到这个问题有多么含糊。我假设这是托管 .dll 的问题(因此是增量构建),因为它在 vs2008 上运行良好。据我所知,将其移至 2010 年没有其他任何变化。我们使用的是 Ogre 1.7,目标是 Windows,并且没有任何日志文件或任何输出......它永远不会进入 main。确切的错误是“应用程序未能正确初始化(0xc000007b)。单击确定以终止应用程序。”
  • 好的,我确定它不是 .dll。我取消了对项目中托管代码的所有调用,并且没有使用托管增量构建或引用框架并运行它......同样的事情。我已经重建,清除了所有中间文件。我从一些谷歌搜索中看到,这通常是由于没有安装必要的 .NET 框架,这不是这里的情况。还有什么可能导致这种情况?我真的不知道如何去查明问题...任何建议都会非常受欢迎!

标签: .net visual-studio-2010


【解决方案1】:

异常 0xc000007b (STATUS_INVALID_IMAGE_FORMAT) 几乎总是在 64 位版本的 Windows 上生成。因为您的程序在 64 位模式下运行并试图加载包含非托管 32 位代码的 DLL。或者反过来。

确保托管程序集是在平台目标设置为任何 CPU 的情况下构建的。这不再是 VS2010 中的默认设置。项目 + 属性,构建选项卡,平台目标设置。请务必更改 Debug 和 Release 配置。

如果您不知道它可能是什么 DLL,请观察使用 SysInternals 的 ProcMon 实用程序加载 DLL 的程序。

【讨论】:

  • Linker-Advanced 中名为“Target Machine”的设置设置为 Machinex86,这是正确的。是你说的那个场景吗……我没找到你说的那个。另外,我做了一个 Dependency Walker,它返回了 3 个丢失的 .dll:MSVCR90D.DLL、IESHIMS.DLL 和 WER.DLL。它说存在“导入/导出不匹配或加载失败”:OGREMAIN_D.DLL 和 OIS_D.DLL。也许我必须在本地构建 Ogre 的东西......
  • 那么,它可以在 64 位版本的 Windows 上运行吗?不,我说的是 C# 项目设置。这与目标机器设置无关。 Dependency Walker 不再是一个好工具,它与并行缓存有问题,请尝试 ProcMon 找到麻烦制造者。另外,不要部署调试版本,不能分发 msvcr90d.dll
  • 不确定 64 位,没有可用的 atm。 C# 项目已正确设置。我现在会弄清楚如何使用 ProcMon,谢谢你的帮助。
  • 好的,我花了很长时间弄清楚如何使用 procmon 来查找它。有什么建议吗?
  • 文件+保存。将文件复制到文件共享服务中,以便我们查看。
猜你喜欢
  • 2012-03-19
  • 2011-02-23
  • 2011-04-02
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
  • 2015-04-06
  • 1970-01-01
相关资源
最近更新 更多