首页 > 解决方案 > 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 之一。

平台:

笔记:

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

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

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

标签: vbams-accessdllsap-guisaprfc

解决方案


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

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

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

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


推荐阅读