2

我的项目结构如下所示:

 myApp 
 -->WCFSerLib (Any CPU Deafult application) 
 -->ClassLib1 (Any CPU)
 -->ClassLib2 (x86)

当我尝试执行我的应用程序时,不幸的是,我收到了以下错误。

 System.BadImageFormatException was unhandled by user code

无论如何,我可以实现上述目标吗?

谢谢

4

3 回答 3

4

如果我猜对了,那么您正在尝试在 x64 机器上使用 x86 dll。使用 AnyCPU,.net 框架将自动使用当前架构。

因此,您的应用程序作为 x64 应用程序运行,该应用程序尝试加载失败的 x86 库。所以你有两个选择:

  • 将目标架构设置为 x86
  • 添加/创建 x64 库

如果您在环境变量的某处同时拥有两个版本(x86/x64),则操作系统将自动选择正确的版本。

于 2012-10-29T11:13:13.937 回答
1

我想您正在 x64 系统上运行您的应用程序。
当 WCFService 库或 ClassLib1 调用 ClassLib2 中的方法时,以这种方式混合 Platform Type 会导致 BFE,因为前两个作为 64 位进程运行,而后者被迫在 x86 模式下运行。

您应该在每个项目上设置相同的平台类型。
当然,WCFService 库仅支持 AnyCPU,因此对于每个项目,使用 AnyCPU 平台类型是有意义的。

如果您的 ClassLib2 需要使用 32 位库 (winscard.dll) 并且没有该库的 64 位版本,那么,我认为您应该使用 WCF 服务应用程序而不是服务库。看到这个问题

于 2012-10-29T11:16:56.073 回答
0

谢谢你们,

问题在于winscard.dll它使用的句柄是 Int32 。我所做的只是用Int64替换Int32

于 2012-10-29T20:48:21.180 回答