如何使用sapnwrfc库连接到SAP?

问题描述 投票:4回答:2

我们的软件是用C#编写的,需要连接到SAP。由于我们的一些客户使用旧版本的SAP,而其他客户没有SAP PI,我们不能通过webservices连接。

我试着通过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: Unable to load 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代理来解决这个问题)?

c# sap dllnotfoundexception saprfc
2个回答
2
投票

你是否用依赖关系查看器检查过是否缺少一些DLL?我曾经为rfc库写过一个托管包装器(至少是一部分),我记得我下载的一些rfc库有问题。有一个版本根本无法工作,我也没弄清楚是什么问题。另一个版本(较老的)工作得很好。

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

如果我必须再做一次这样的事情,我会非常认真地考虑购买一个连接器。http:/www.theobald-software.comenproductserpconnect.htm

我不能说它是否好,但他们似乎已经存在一段时间了。


2
投票

你为什么不干脆使用SAP的".NET连接器"(NCo3)呢?参见SAP注释856863中的下载页面和文档链接。

© www.soinside.com 2019 - 2024. All rights reserved.