首页 文章

如何通过SAP NetWeaver RFC库(sapnwrfc.dll)从C#连接到SAP?

提问于
浏览
4

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

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

  • 将sapnwrfc.dll和其他dll从NWRFC_6-20004550.SAR(即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代理来解决此问题)?

2 回答

  • 2

    如果您缺少某些DLL,您是否使用Dependency Viewer进行了检查?我曾经为rfc库编写了一个托管包装器(至少是它的一部分),我记得我下载的一些rfc库有问题 . 一个版本根本不起作用,我没有弄清楚出了什么问题 . 另一个版本(较旧)工作得很好 .

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

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

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

  • 2

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

相关问题