Java调用C#
发布人:shili8
发布时间:2023-07-18 14:22
阅读次数:232
在Java中调用C#代码是一种常见的需求,特别是在跨平台开发或者与已有的C#代码进行集成时。下面是一个简单的示例,展示了如何在Java中调用C#代码。
首先,我们需要创建一个C#类库项目。在该项目中,我们创建一个名为Calculator的类,该类包含一个简单的加法方法。
csharp using System; namespace CalculatorLibrary { public class Calculator { public int Add(int a int b) { return a + b; } } }
接下来,我们需要将C#类库编译为一个可供Java调用的DLL文件。可以使用Visual Studio或者命令行工具进行编译。
在Java中,我们需要使用JNI(Java Native Interface)来调用C#代码。首先,我们需要加载C# DLL文件。
java public class Main { static { System.loadLibrary(CalculatorLibrary); } public static void main(String[] args) { // 调用C#方法 int result = Calculator.add(2 3); System.out.println(Result: + result); } // 声明C#方法 public static native int add(int a int b); }
在Java代码中,我们使用`System.loadLibrary`方法加载C# DLL文件。然后,我们声明一个`add`方法,该方法是一个本地方法,用于调用C#的加法方法。
接下来,我们需要生成一个包含JNI方法的头文件。可以使用`javah`命令来生成头文件。
shell javah -jni Main
生成的头文件将包含一个`Java_Main_add`方法的声明,该方法将在C#代码中实现。
最后,我们需要在C#代码中实现JNI方法。
csharp using System; using System.Runtime.InteropServices; namespace CalculatorLibrary { public class Calculator { [DllImport(CalculatorLibrary.dll)] public static extern int add(int a int b); } }
在C#代码中,我们使用`DllImport`特性来声明JNI方法。该特性指定了DLL文件的名称和方法的签名。
现在,我们可以编译并运行Java代码,它将调用C#的加法方法,并打印结果。
需要注意的是,这只是一个简单的示例,实际的调用可能涉及更复杂的数据类型和参数传递。此外,还需要确保C#代码和Java代码的运行环境是兼容的。
希望这个示例能够帮助你理解如何在Java中调用C#代码。