我们的软件是用C#编写的,需要连接到SAP。由于我们的一些客户使用旧版本的SAP,而其他客户没有SAP PI,我们不能通过webservices连接。
我试着通过SAP NetWeaver远程函数调用库(sapnwrfc.dll)连接到SAP,具体操作如下。
运行这段代码会出现一个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代理来解决这个问题)?
你是否用依赖关系查看器检查过是否缺少一些DLL?我曾经为rfc库写过一个托管包装器(至少是一部分),我记得我下载的一些rfc库有问题。有一个版本根本无法工作,我也没弄清楚是什么问题。另一个版本(较老的)工作得很好。
然而,我确实在unicode库上遇到了问题(一些随机出现的内存访问问题),所以我不得不切换到非unicode版本......。
如果我必须再做一次这样的事情,我会非常认真地考虑购买一个连接器。http:/www.theobald-software.comenproductserpconnect.htm
我不能说它是否好,但他们似乎已经存在一段时间了。
你为什么不干脆使用SAP的".NET连接器"(NCo3)呢?参见SAP注释856863中的下载页面和文档链接。