java 调用C#语言写的dll文件代码 超详细过程
前言 最近在编写项目时候,遇到了java调用C#类库的情况,试了很多种方法,也遇到了很多坑。解决之后写下来。作为记录和分享给有用的朋友们。在这里我用的工具是jni4net-0.8.8.0,Visual Studio2015
一、编写C#类库代码,并生成DLL文件。 1.按如图步骤用Visual Studio(我用的vs2015)新建一个C#的类库项目,项目名称为HelloWorld。
创建C#类库项目步骤
2.重命名类名Hello
3.类库代码 namespace HelloWorld { public class Hello { public static int display(int a,int b) { return a+b; } } } 4.右键项目,生成。编译成dll
二、编写java代码 1.用jni4net工具把dll文件编译;(jni4net工具下载地址:) 文件夹找到jni4net的bin目录,创建cmd命令文件,方便后续使用; 命令:.proxygen.exe “DLL所在路径” -wd “java项目根路径” 如:.proxygen.exe “D:JavaHelloWorld.dll” -wd “E:ProjectJni4netProject” 执行后java项目的根目录下会多出下图红色框中的文件和一个build.cmd文件
(运行是可能会遇到javac 不是内部或外部命令,也不是可运行的程序 或批处理文件和csc 不是内部或外部命令,也不是可运行的程序 或批处理文件;需要配置JDK环境变量和Microsoft.NET的环境变量)
2.将dll文件打包乘jar包 将命令行切换到java项目的根目录下(和src同级目录),执行命令build.cmd,java项目根目录下会编译出2个文件分别为HelloWorld.j4n.dll和HelloWorld.j4n.jar, 如下图:
3.拷贝文件并添加jar包依赖; 然后将jni4net的lib目录下的jar文件和dll文件copy到java项目的根目录下,将C#项目的HelloWorld.dll的文件也copy到java项目的根目录下,
添加依赖的方式有多种(我用的第一种),如: 1.将HelloWorld.j4n.jar和jni4net.j-0.8.8.0.jar添加到File—Progect Structure --Modules–Depengdenies–
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); } 并执行: