gpt4 book ai didi

x86 - OPOS 库 v1.14 无法按预期使用 .net 的 x64 版本

转载 作者:行者123 更新时间:2023-12-01 23:27:21 24 4
gpt4 key购买 nike

我们在桌面应用程序中使用 OPOS 驱动程序 v 1.11,现在将其迁移到 v 1.14。该应用程序在 x86 架构上的较新版本上运行良好,但在编译为 x64 时,它会针对未注册的类抛出运行时错误。第一次尝试初始化对象类的新实例时会遇到异常。当调用新实例时,

oPOSPOSPrinter = new OPOSPOSPrinter();

抛出的异常是,

System.Runtime.InteropServices.COMException
HResult=0x80040154
Message=Retrieving the COM class factory for component with CLSID {CCB90152-B81E-11D2-AB74-0040054C3719} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Source=mscorlib

我们在这里引用的 dll 是 32 位版本,我们的应用程序是在 64 位上编译的。

我们尝试通过 regsvr32 工具注册它,但随后它也在那里抛出异常。

enter image description here

我们尝试手动将其添加到注册表,但没有帮助。

我们尝试了两个版本,一个来自默认的 OPOS 安装目录,另一个来自同一目录中的 OposFor.Net 文件夹。

所以,我们想请教一个解决方案,如何实现这一点?我们希望在 x64 架构上迁移我们的应用程序,并在 OPOS v 1.14 上支持 OPOS v 1.11 的所有当前功能。另外,是否会在不久的将来提供 64 位版本的 OPOS 驱动程序?

系统和应用信息:操作系统:Windows 10 专业版集成开发环境:VS 2017,.Net 版本:.Net 4 +OPOS dll版本:1.14.001

最佳答案

64 位进程不能在其进程中直接调用 32 位库。您需要采用不同的方法与 32 位库对话。

  • 创建一个单独的 32 位 exe,它将执行您想要的操作使用该 32 位库实现,并从您的 64 位进程调用该 exe,并通过传递正确的参数,您可以根据这些参数识别调用及其操作,并将所需的输出返回给您的进程。
  • 您还可以创建基于 WebSocket 的客户端/服务器应用程序,并且可以与您的 64 位进程通信,这会更快方法然后一个exe
  • 或者,您也可以创建一个 WCF 服务,您可以在其中使用您的 32 位 dll 并在您的 64 位中使用该 WCF 服务申请并完成。

注意:如果通信需要在同一台机器上进行(意味着您的 64 位应用程序和 32 位库将在同一台机器上),在这种情况下,前两个选项将是最好的合作方式。

希望此信息对您有所帮助,并能帮助您进一步前进。

快乐编码...

关于x86 - OPOS 库 v1.14 无法按预期使用 .net 的 x64 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54805485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com