vb.net - 32 位和 64 位机器之间的错误图像格式异常

标签 vb.net winforms visual-studio-2008 ibm-midrange

我们有一个必须与 AS400 通信的 winforms 应用程序。为此,我们在 Winforms 应用程序中导入了 IBM.Data.DB2.iSeries 类,并在我们的机器上安装了 IBM System I Access for Windows。它必须有 System I Access,否则它不会与 AS/400 对话。在我的 64 位开发机器上一切正常。它在客户端的 64 位机器上也能正常工作。然而,当我们尝试在 32 位机器上安装它时,我们会收到 Bad Image format 异常。我们尝试只制作一个 x86 安装程序而不是任何 cpu,但这没有用(同样的坏图像异常)。有什么想法吗?

最佳答案

即使您已将程序编译为 32 位,它仍会在某处尝试加载 64 位 dll。既然你说第 3 方 dll 是 32 位的,那么剩下的就是你自己的 dll。

您可以通过将解决方案平台设置为 x86 来验证这一点。然后检查所有项目(exe 和 dll)是否设置为 x86。我怀疑其中一个将平台目标设置为 x64。您可以通过右键单击项目来检查它们,选择属性,构建选项卡 -> 平台目标。

还要确保所有 dll 实际上都设置为在配置管理器中构建(从菜单栏的解决方案平台下拉列表中选择“配置管理器...”。

关于vb.net - 32 位和 64 位机器之间的错误图像格式异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9728273/

相关文章:

c# - 从 Internet 获取汇率

c# - 从对象填充 TreeView

c# - 视觉继承 - 将设计器中的控件添加到 TableLayoutPanel 中托管的面板

windows - 安装 .net 2008 Windows 服务

visual-studio-2008 - 如何配置 CruiseControl 项目以从 sourcesafe 获取多个项目

javascript - 单击单选按钮时显示文本框。我该怎么做呢?

c# - 显示任何进程,如模态窗口

vb.net - 向上舍入到下一个 10 vb 的倍数

c# - 如何在 LinqPad 查询中显示 MessageBox 对话框?

c# - TFS 2008 源代码管理 - 销毁所有已删除项目的快速方法