简体   繁体   English

SAP Netweaver。 C++ 错误:无法读取内存

[英]SAP Netweaver. C++ Error:The memory cannot be read

For my project, I need to test if the router string connects with SAP server successfully using SAP Netweaver 7.0.对于我的项目,我需要使用 SAP Netweaver 7.0 测试路由器字符串是否成功连接到 SAP 服务器。 I have created a Console application in Visual studio 2017. I have given the connection parameters.我在 Visual Studio 2017 中创建了一个控制台应用程序。我已经给出了连接参数。 But the application ends with an error: The memory cannot be read但是应用程序以错误结束:无法读取内存

#include <stdlib.h>
#include <stdio.h>
#include "stdafx.h"
#include "include/sapnwrfc.h"


void errorHandling(RFC_RC rc,  RFC_ERROR_INFO*errorInfo, RFC_CONNECTION_HANDLE connection) {

    printfU(cU("%s:  %s\n"), errorInfo->key, errorInfo->message);
    /* It's better to close the TCP/IP connection cleanly, than tojust let the backend get a "Connection reset by peer" error...*/
    if (connection != NULL)  RfcCloseConnection(connection, errorInfo);
    exit(1);
}


int mainU(int argc, SAP_UC** argv)
{
    RFC_RC  rc = RFC_OK;   
    RFC_CONNECTION_PARAMETER  loginParams[6];  
    RFC_ERROR_INFO  errorInfo;   
    RFC_CONNECTION_HANDLE  connection;

    //  -----------------------------------------------
    //  OPEN CONNECTION
    //  -----------------------------------------------
    //  Create logon parameter list
    loginParams[0].name = cU("gwhost");
    loginParams[0].value = cU("80.**.***.**");
    loginParams[1].name = cU("sysnr");
    loginParams[1].value = cU("00");
    loginParams[2].name = cU("client");
    loginParams[2].value = cU("800");
    loginParams[3].name = cU("user");
    loginParams[3].value = cU("jsar12");
    loginParams[4].name = cU("lang");
    loginParams[4].value = cU("EN");
    loginParams[5].name = cU("****");
    loginParams[5].value = cU("Abc");

    //  Open connection
    connection = RfcOpenConnection(loginParams, 6, &errorInfo);
    if (connection == NULL) errorHandling(rc, &errorInfo, NULL);

    return 0;
}

Expected Result: Connection to the SAP Router预期结果:连接到 SAP 路由器

The solution for the above problem was in the settings of the Visual Studio.上述问题的解决方案是在 Visual Studio 的设置中。 After a lot of searching and trying out a few tricks I have found the solution in the following link: https://answers.sap.com/questions/12367200/netweaver-rfc-connector-error-logon.html经过大量搜索和尝试一些技巧后,我在以下链接中找到了解决方案: https : //answers.sap.com/questions/12367200/netweaver-rfc-connector-error-logon.html

Summary:概括:

On Linux and Windows, certain minimum releases of the C runtime are required to execute the programs. See SAP Notes 1021236 (for Linux) and 684106 (for Windows). The compiler and linker options needed to compile programs using the SAP NetWeaver RFC SDK are listed in SAP Note 1056696.

In addition, for Windows users using Microsoft Visual Studio, this is a description of how to set the Visual Studio project properties:

General section: Make sure the CharacterSet field is set to “Use Unicode Character Set.”

Debugging section: Under Environment, add something like Path=%Path%;nwrfcsdk\lib.

C/C++ section:

General: Add the nwrfcsdk\include directory under Additional Include Directories.

Preprocessor: Add the two preprocessor definitions SAPonNT and SAPwithUNICODE.

Code Generation: Choose “Multi-threaded DLL (/MD)” as the Runtime Library; selecting “Multi-threaded Debug DLL (/MDd)” may lead to strange problems.

Linker section:

General: Add the nwrfcsdk\lib directory under Additional Library Directories.

Input: Under Additional Dependencies, add libsapucum.lib, sapnwrfc.lib, and sapdecfICUlib.lib

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM