5

我们的软件是用 C# 编写的,需要连接到 SAP。由于我们的一些客户使用旧版本的 SAP,而其他客户没有 SAP PI,因此我们无法通过 Web 服务进行连接。

我尝试通过 SAP NetWeaver 远程函数调用库 (sapnwrfc.dll) 连接到 SAP,如下所示:

  • 将 sapnwrfc.dll 和 NWRFC_6-20004550.SAR 中的其他 dll(即 icudt34.dll、icuin34.dll、icuuc34.dll、libicudecnumber.dll 和 libsapucum.dll)添加到 C:\WINDOWS\system32,以确保它们能够被找到的。
  • 在我的 C# 代码中,在类定义中添加以下内容:
        [DllImport("sapnwrfc.dll", CharSet = CharSet.Auto)]
        public static extern void RfcInit();
    以及应该完成工作的方法中的以下内容:
        RfcInit();

运行此代码会出现 DllNotFoundException:
无法加载 DLL 'sapnwrfc.dll':此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。(来自 HRESULT 的异常:0x800736B1)

运行标准 connect-to-C++-from-C# 示例
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
    MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
工作正常。

有什么建议可以使这项工作正常工作(这样我们就不需要通过使用 JCo 编写 Java 代理来解决这个问题)?

4

3 回答 3

2

如果您缺少一些 DLL,您是否检查过依赖项查看器?我曾经为 rfc 库(至少是其中的一部分)编写了一个托管包装器,我记得我下载的一些 rfc 库有问题。一个版本根本不起作用,我不知道出了什么问题。另一个版本(旧)工作得很好。

然而,我确实遇到了 unicode 库的问题(一些随机出现的内存访问问题)所以我不得不切换到非 unicode 版本......

如果我不得不再次这样做,我会非常认真地考虑购买连接器: http ://www.theobald-software.com/en/products/erpconnect.htm

我不能说这是否有任何好处,但它们似乎已经存在了一段时间。

于 2010-02-27T12:38:47.783 回答
2

为什么不简单地使用 SAP 的“.NET 连接器”(NCo3)?有关下载页面和文档的链接,请参阅 SAP 说明 856863。

于 2018-03-05T12:56:57.073 回答
0

请尝试将icudt34.dll、icuin34.dll、icuuc34.dll、libicudecnumber.dll、libsapucum.dll复制到项目的bin目录下。我试过了,效果很好。

于 2020-09-29T07:47:10.680 回答