MS Access 无法连接到 SAP“无法加载 LibRfc32.dll”错误 - VBA - SAP

问题描述

如何解决从 Microsoft Access 365 调用时无法加载 librfc32.dll 错误?

我已经尝试了下面列出的网上常见的故障排除步骤,需要帮助。

注意:这是一个已有 25 年历史的复杂大型应用程序,我无法升级到比 SAP GUI 7.40 更高的版本,因为其他应用程序需要它。我无法在 Access VBA 中重写 Web 服务调用,因为它被明确排除在我的项目之外。这是一个 Access 10 到 Access 365 更新项目,没有分配时间重写。

注意:这是一台服务器机器,我无法安装 DependencyWalker、Visual Studio 或其他诊断工具。

尝试使用 librfc32.dll 将数据发送到 SAP 时,我在 Microsoft Access 365 中收到此错误:

无法加载 DLL 'librfc32.dll' 找不到指定的模块。(异常来自 HRESULT 0x8007007E)

错误是无法加载 librfc32.dll 或它所依赖的 DLL 之一。

平台:

  • Windows Server 2016,64 位
  • Microsoft Access 365 32 位
  • SAP GUI 7.40 补丁级别 13 前端工具应用程序 - SAP NetWeaver v7400.3.13.1130 - 版本 1756678 - 补丁级别 13
  • Librfc32.dll 是 SAP 7.40 GUI 前端工具应用程序的一部分

注意事项:

  • 我们无法升级到 SAP GUI 7.5 或更高版本,因为它被同一台机器上的其他应用程序使用
  • MSAccess 应用程序刚刚从 MSAccess 2010 升级
  • MSAccess 应用程序没有为 SAP DLL 或 OCX 文件设置任何依赖项
  • Librfc32.dll 依赖于这些基于“dumpbin.exe /dependents librfc32.dll”的其他 DLL。 Dumpbin.exe 是 Visual Studio 2019 的一部分。Visual Studio 2019 未安装在出现无法加载 DLL 错误的机器上。
  • Librfc32.dll 依赖项 - 它们都在 C:\Windows\SysWow64 中。 ole32.dll、RPCRT4.dll、OLEAUT32.dll、KERNEL32.dll、ADVAPI32.dll、USER32.dll、WS2_32.dll、IPHLPAPI.DLL、NETAPI32.dll、SHELL32.dll、dbghelp.dll、VERSION.dll、MSVCR110。 dll

到目前为止我们已经尝试过并且都给出了相同的无法加载 DLL 错误:

  • 试用版 1 - 在安装 SAP GUI 7.40 之前运行 MSAccess 应用程序
  • 试用版 2 - 安装 SAP GUI 7.40
  • 试用版 3 - 在 MSAccess 应用程序中,添加对 C:\Windows\SysWow64\librfc32.dll 的引用
  • 试用 4 - 使用“regsvr32 librfc32.dll”注册 librfd32.dll
  • 试用版 5 - 在 MSAccess 应用程序中,从 SAP GUI 应用程序添加对以下 DLL 的引用。这是来自 2009 年这里的类似 Access 2010 SAP GUI 7.20 问题 并且所有 DLL 都存在于出现错误的机器上:https://answers.sap.com/questions/6537228/access-calls-sap-rfc-function-modules.html
    • regsvr32 c:\program files (x86)\sap\frontend\sapgui\wdobapi.ocx
    • regsvr32 c:\program files (x86)\common files\sap shared\wdtlog.ocx
    • regsvr32 c:\windows\SysWOW64\librfc32.dll
    • regsvr32 c:\program files (x86)\sap\frontend\sapgui\wdtaocx.ocx
    • regsvr32 c:\program files (x86)\sap\frontend\sapgui\wdtfuncs.ocx
  • 试用版 6 - 检查 Windows 事件日志。运行 MSAccess 应用程序并生成错误消息。再次检查 Windows 事件日志。未找到与此错误相关的消息
  • 试用版 7 - 将 librfc32.dll 和 librfc32u.dll 复制到 MSAccess.exe 所在的 Microsoft Office 可执行目录
  • 试用版 8 - 将 C:\Windows\SysWow64 添加到 PATH 环境变量无效。启动 DOS,"SET PATH=%PATH%;C:\Windows\SysWow65; 然后从 DOS 命令行运行 MSAccess
  • 试用版 9 - 已验证 msvcr110.dll、msvcp110.dll、MFC*.dll 位于 C:\Windows\SysWow64。 Dumpbin.exe 根据 librfc32.dll 的需要显示这些 DLL 的 v110。这被 https://answers.sap.com/questions/3505999/librfc32dll-not-found-on-windows-server-2003.html
  • 引用

librfc32.dll 类似问题的相关参考链接。请注意,这些申请的有效期最长为 15 年,其中许多建议适用于过时的申请。

在尝试了许多变通方法并查看了 50 多个网页后,我在 StackOveflow 上发帖。我想在这个问题中包含一些更接近这个问题的链接,但由于链接错误太多而受到限制。

解决方法

librfc32.dll 是经典的 RFC 库,它也是经典 RFC SDK 的一部分。它还随以前的 SAP GUI 版本和其他产品一起提供。 但与此同时,SAP 不再对经典 RFC 库和经典 RFC SDK 进行维护和支持。您将不会再获得此库的新版本或更新。

此库需要哪些 Visual C 运行时库取决于 librfc32.dll 源自的 SAP 版本和库的位宽(32 位与 64 位)。请注意,对于所有动态加载的库,您始终需要相同的位宽,这些库必须适合加载这些库的主程序的位宽。因此,请检查您的 MS Access 可执行文件是 32 位还是 64 位程序。

尽管名为 librfc32.dll,但它作为 32 位库和 64 位库存在。 在 Windows 目录 SysWOW64 中,您通常会找到 32 位库,而在 64 位 Windows 安装的目录 system32 中,您将找到 64 位库 [感谢 Microsoft 的命名约定]。 :)

无论如何你不需要这个库的 Unicode 版本的 librfc32u.dll。您不能在一个过程中同时使用两者。您的代码要么是为 Unicode 编译的,要么不是,而且由于您尝试加载 librfc32.dll,它似乎是为非 Unicode 运行时编译的。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...