【发布时间】:2015-05-10 21:45:25
【问题描述】:
我们开发了一个应用程序来控制和扫描任何文件,如图像等,作为一个 C# Winform 应用程序,它可以在 x86 OS 平台下成功运行。在应用程序中,我们使用 C# twain 类向扫描仪发送命令,这样我们就可以实现我们想要的。 众所周知,Twain_32.dll 文件用于运行应用程序并进行无故障扫描。
我的问题是,在 x64 操作系统平台上,我们无法运行该应用程序并收到一个名为 BadImageFormatException 的错误,它试图告诉我们这完全与操作系统类型有关!所以这个错误提示我尝试在不兼容的操作系统类型下运行应用程序。
我体验过 32 位 twain dll 在 x64 系统下工作,但我遇到了另一个问题。 我们在一个父表单下运行我们的所有应用程序,即 MDI 父表单。所以我想用作扫描目的的表格将是一个 MDI 客户端表格。好吧,虽然我的程序编译为 ANYCPU,但 CLR 将在 Windows x64 中将其作为 x64 位应用程序运行操作系统。 这就是为什么,即使我在 x64 Win OS 中将我的扫描表单编译为 x86 平台目标,我也无法运行该应用程序。
到此为止,希望你们都明白我的意思!!!
作为解决方案,我尝试安装 Twack64 安装文件以获取 TWAINDSM.dll 文件并在 x86 和x64 操作系统机器。 此外,在我的自定义 twain 源项目中,我更改为 dll 导入属性 TWAINDSM.dll 而不是 Twain_32.dll,但没有成功。
我是不是在这里遗漏了什么,或者 Twain C# 应用程序无法将 TWAINDSM.dll 识别为 twain dll? 我卡在这一步,不能再往前走了!!!拉我的头发3-4天!!! :(
快速的手对我会有很大的帮助! 期待您的来信!!!
【问题讨论】:
-
如果您将整个应用程序编译为 x86 而不是 AnyCPU,您会遇到什么问题?这应该会在 64 位系统中生成完美运行的 32 位应用程序,当然,您可以使用 32 位库
-
这对于小型应用程序来说是有道理的,但是你所说的对于大型应用程序来说确实很难取得进展,因为我正在谈论大约 100 个或更多的项目来源......我必须让它们全部编译为 x86 作为平台目标...问题是我必须与我的经理讨论它,但我试图找出更便宜和更简单的方法...没有任何 x64 应用程序的示例可以使用另一个 twain使用 TWAINDSM.dll 之类的驱动程序??
标签: c# winforms scanning twain twaindotnet