C# 如何使用sapnwrfc库连接到SAP?
我们的软件是用C语言编写的,需要连接到SAP。由于我们的一些客户使用较旧版本的SAP,而其他客户没有SAP PI,因此我们无法通过Web服务进行连接 我尝试通过SAP NetWeaver远程函数调用库(sapnwrfc.dll)连接到SAP,如下所示:C# 如何使用sapnwrfc库连接到SAP?,c#,sap,dllnotfoundexception,saprfc,C#,Sap,Dllnotfoundexception,Saprfc,我们的软件是用C语言编写的,需要连接到SAP。由于我们的一些客户使用较旧版本的SAP,而其他客户没有SAP PI,因此我们无法通过Web服务进行连接 我尝试通过SAP NetWeaver远程函数调用库(sapnwrfc.dll)连接到SAP,如下所示: 从NWRFC_6-20004550.SAR添加sapnwrfc.dll和其他dll (分别为icudt34.dll、icuin34.dll、icuuc34.dll、LIBICUDCNUMBER.dll和libsapucum.dll) 到C:\W
- 从NWRFC_6-20004550.SAR添加sapnwrfc.dll和其他dll (分别为icudt34.dll、icuin34.dll、icuuc34.dll、LIBICUDCNUMBER.dll和libsapucum.dll) 到C:\WINDOWS\system32,以确保可以找到它们
- 在我的C#代码中,在类定义中添加以下内容:
[DllImport(“sapnwrfc.dll”,CharSet=CharSet.Auto)]
公共静态外部无效RfcInit()
在应该做这项工作的方法中有以下几点:
RfcInit()李>
无法加载DLL“sapnwrfc.DLL”:由于应用程序配置不正确,此应用程序无法启动。重新安装应用程序可能会解决此问题。(HRESULT的异常:0x800736B1) 运行标准的connect-to-C++-from-C#示例
[DllImport(“user32.dll”,CharSet=CharSet.Unicode)]
公共静态外部int消息框(IntPtr hWnd、字符串文本、字符串标题、uint类型)
MessageBox(新IntPtr(0),“Hello World!”,“Hello Dialog”,0)
很好
有什么建议可以让这项工作正常进行(这样我们就不需要通过使用JCo编写Java代理来解决这个问题)?如果缺少一些DLL,您是否向依赖项查看器进行了检查?我曾经为rfc库编写过一个托管包装器(至少是其中的一部分),我记得我下载的一些rfc库出现了问题。一个版本根本不起作用,我也不知道哪里出了问题。另一个版本(旧版本)运行良好 但是我确实有unicode库的问题(一些随机出现的内存访问问题),所以我不得不切换到非unicode版本 如果我必须再做这样的事情,我会认真考虑买一个连接器:
我不能说这是否有什么好处,但它们似乎已经存在了一段时间。为什么不直接使用SAP的“.NET连接器”(NCo3)?
有关下载页面和文档的链接,请参阅SAP note 856863。请尝试将icudt34.dll、icuin34.dll、icuuc34.dll、LIBICUDCNUMBER.dll和libsapucum.dll复制到项目的bin目录中。我试过了,效果很好。问得好-不知道,对不起。另外,将其标记为RFC。如果您在java回退方面需要帮助,请随时询问:-)可能是因为SAP在2010年2月还没有发布NCo3?;)嗯,这可能是一个合理的理由……;)但我最好现在就把我的评论留给今天读这篇文章的人。好吧,这很有说服力。我对你的幽默感投了一票(当然也是正确的答案)