如何在Java中调用C#dll中的函数?

时间:2017-12-15 08:02:30

标签: java c# dll java-native-interface sap-connector

我有一个SAP-DLL来启用编程接口和SAP程序之间的通信。

我跟随c#的示例代码与dll-File结合使用:

var loggerService = LoggerService.GetLoggerService("FileLogger");
var itasProxy = SapProxyFactory.CreateSapProxy(SapSystem.Example, loggerService, "Example_User", StringExtension.CreateSecureString("Example_Password")); 
var funcResult = sapProxy.SearchSapAddress(clientNo);

if (funcResult.Successfull)
{
    funcResult.ReturnValue = withFormatting
        ? AddressFormatter.SplitStreetHouseNo(funcResult.ReturnValue)
        : funcResult.ReturnValue;
}

现在我希望将相同的功能转移到java。我完全不知道该怎么做。我尝试使用Loggerservice作为启动器,但它不起作用:

public class SAPConnector {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        connectSAP();
    }
    public void connectSAP()
    {
        System.load("C://Temp//SapConnector.dll");
        Object loggerService = getLoggerService("FileLogger");
    }
    public native Object getLoggerService(String lcLogger);
}

我只需要一些信息如何从dll调用函数或者如何将C#代码转换为Java中的代码。

问候,

凯文

1 个答案:

答案 0 :(得分:3)

DLL是Microsoft格式。 Java是跨平台的,因此无法识别任何特定于操作系统的内容,例如DLL。

另一种方法是使用JNI (Java Native Interface),但这通常不是一个好的解决方案,因为它会使您的程序依赖于平台。

相反,我会从SAP寻找一个提供类似界面的JAR。 也许是SAP JCO的内容。

您可以看到一些actual code examples using JCO here和一些technical information on step-by-step download and configure here