java调用C#类库,超详细过程,理清步骤之后非常简单。


文章目录

  • 前言
  • 一、编写C#类库代码,并生成DLL文件。
  • 1.按如图步骤用Visual Studio(我用的vs2015)新建一个C#的类库项目,项目名称为HelloWorld。
  • 2.重命名类名Hello
  • 3.类库代码
  • 4.右键项目,生成。编译成dll
  • 二、编写java代码
  • 1.用jni4net工具把dll文件编译;
  • 2.将dll文件打包乘jar包
  • 3.拷贝文件并添加jar包依赖;
  • 4.java代码
  • 总结



前言

最近在编写项目时候,遇到了java调用C#类库的情况,试了很多种方法,也遇到了很多坑。解决之后写下来。作为记录和分享给有用的朋友们。在这里我用的工具是jni4net-0.8.8.0,Visual Studio2015

一、编写C#类库代码,并生成DLL文件。

1.按如图步骤用Visual Studio(我用的vs2015)新建一个C#的类库项目,项目名称为HelloWorld。

java 生产dll java编写dll文件_java项目


java 生产dll java编写dll文件_java_02


创建C#类库项目步骤

2.重命名类名Hello

java 生产dll java编写dll文件_c#_03

3.类库代码

namespace HelloWorld
{
    public class Hello
    {
        public static int display(int a,int b)
        {
            return a+b;
        }
    }
}

4.右键项目,生成。编译成dll

java 生产dll java编写dll文件_java 生产dll_04

二、编写java代码

1.用jni4net工具把dll文件编译;

文件夹找到jni4net的bin目录,创建cmd命令文件,方便后续使用;

命令:.\proxygen.exe “DLL所在路径” -wd “java项目根路径”

如:.\proxygen.exe “D:\Java\HelloWorld.dll” -wd “E:\Project\Jni4netProject”

执行后java项目的根目录下会多出下图红色框中的文件和一个build.cmd文件

java 生产dll java编写dll文件_java 生产dll_05

2.将dll文件打包乘jar包

将命令行切换到java项目的根目录下(和src同级目录),执行命令build.cmd,java项目根目录下会编译出2个文件分别为HelloWorld.j4n.dll和HelloWorld.j4n.jar,

如下图:

java 生产dll java编写dll文件_java_06

3.拷贝文件并添加jar包依赖;

然后将jni4net的lib目录下的jar文件和dll文件copy到java项目的根目录下,将C#项目的HelloWorld.dll的文件也copy到java项目的根目录下,

java 生产dll java编写dll文件_java 生产dll_07

添加依赖的方式有多种(我用的第一种),如:

1.将HelloWorld.j4n.jar和jni4net.j-0.8.8.0.jar添加到File—Progect Structure --Modules–Depengdenies–

java 生产dll java编写dll文件_java_08


2.把jar包放到指定位置,在pom文件中添加依赖,如:

<dependency>
			<groupId>com.xgtx</groupId>
			<artifactId>ObcClient.j4n</artifactId>
			<version>1.0.1</version>
			<scope>system</scope>
			<systemPath>C:/dll/ObcClient.j4n.jar</systemPath>
		</dependency>
		<dependency>
			<groupId>com.xgtx</groupId>
			<artifactId>jni4net.j</artifactId>
			<version>1.0.1</version>
			<scope>system</scope>
			<systemPath>C:/dll/jni4net.j-0.8.8.0.jar</systemPath>
		</dependency>

4.java代码

public static void main(String[] args) {
        Bridge.setVerbose(true);
        Bridge.init();
        File dll = new File(  "HelloWorld.j4n.dll");
        Bridge.LoadAndRegisterAssemblyFrom(dll);
        int result =helloWorld.Hello.display(66,22);
        System.out.println("计算结果为:"+result);
    }

并执行:

java 生产dll java编写dll文件_java 生产dll_09


这里仅仅是展示了调用的一种方法,还可以通过实例化 C# 类库中的类 ,再去调用类中的方法。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了java调用c#类库的过程示例,实际使用过程中还有很多坑,大家互相学习。