【问题标题】:Bad image format exception while running application [duplicate]运行应用程序时出现错误的图像格式异常[重复]
【发布时间】:2013-01-31 01:37:43
【问题描述】:

请阅读问题,不会重复。

我有一个英特尔感知计算的 dll。 他们提供了使用 dll 并且工作正常的演示控制台应用程序。

我尝试在 Windows 应用程序中使用相同的 dll。一旦我创建了类的对象,它就会抛出错误:

无法加载文件或程序集 'libpxcclr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。试图加载格式不正确的程序。

这里有什么问题我想不通。我在 x64 位机器上运行它。

感谢您的帮助。

【问题讨论】:

  • 此时我认为您的声明没有任何理由:“它不会重复” - 我没有看到证明您验证了所有 DLL 匹配的位数,检查了所有 DLL 是否可用(如指定由提供您样品的人),检查是否正确重建thigs ...
  • 嘿 alexei ...这里的 dll 与控制台应用程序配合得很好。为什么它在 winforms 和 xna 模板中抛出错误。
  • 它由英特尔提供。 DLL 适用于控制台应用程序。如果我创建新的 winforms、xna 或任何其他模板,并且一旦我开始创建一个类的对象,它就会开始抛出这个错误。

标签: c# exception .net-assembly badimageformatexception


【解决方案1】:

不是答案,但不适合 cmets...

  • 您需要验证所有涉及的 DLL 的位数。您只指定了机器的位数,它对进程和 DLL 的位数几乎为零。如果每个 DLL 需要特定的进程位数 (x86/x64),您需要检查它。
  • 您需要获取所需的 DLL 列表以及它们必须放置的位置(GAC,相对于进程,在某些特殊文件夹中...)。通常,提供库/示例的人将拥有包含位置的 DLL 列表,或者拥有在正确位置配置所有 DLL 的安装程序。
  • 您需要确保所有文件都位于应有的位置(即 DLL 可能需要标记为“复制本地”,在构建过程中将本机二进制文件显式复制到适当的位置...)。重建通常会手动清理文件位置 - 尝试使所有复制操作成为构建的一部分。

在最坏的情况下,使用“depends”和“process explorer”等工具来挖掘依赖项...

【讨论】:

  • 但这里我的 dll 是 x64 位,并与活动 cpu 配置一起编译。我的机器是64位的。无论如何感谢您的回复。我会尽力跟进所有要点。
  • intel 已经为他们的框架进行了设置,我相信所有的 dll 都会被它正确放置。我明确检查程序文件文件夹。一切看起来都很好。
猜你喜欢
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 2017-05-17
  • 2021-06-20
相关资源
最近更新 更多