用IKVMC将jar转成dll供c#调用

一、下载 ikvmbin-7.2.4630.5.zip
下载地址:官网(需要 svn) http://www.ikvm.net/
或者资源 https://download.csdn.net/download/street_walker/11002454
或者备用下载:http://sourceforge.mirrorservice.org/i/ik/ikvm/ikvm/7.2.4630.5/

二、解压 、配置环境变量
解压到文件夹后,需要将文件路径添加到环境变量 计算机–>属性–>高级系统设置–>环境变量–>找到系统变量中的 path–>添加路径
1.
用 IKVMC 将 jar 转成 dll 供 c#调用
2.
用 IKVMC 将 jar 转成 dll 供 c#调用

三、使用方法
在解压路径下,按住 Shift+鼠标右键 选择 PowerShell(或者用其他方式打开命令行,找到解压路径),如图
用 IKVMC 将 jar 转成 dll 供 c#调用
注意:先将需要转换的文件放到解压目录下
用 IKVMC 将 jar 转成 dll 供 c#调用

输入 ikvmc -target:library android-2.3.1.jar 将文件转换成相同文件名的 dll

或者输入 ikvmc -target:library android-2.3.1.jar -r:test.dll 将文件转换成指定名字的 dll

.\ikvmc -target:library opsin-2.4.0-jar-with-dependencies.jar

 


将 jar 转换为 dll 以前总是感觉 是不可以运用的 但是 后来经过上网上搜一些资料后然后可以运用了。

具体运用如下步骤 : 主要运用 需要    下载一个 IKVM   配置好环境变量  具体操作如下

 一、将已经编译后的 java 中 Class 文件进行打包;打包命令JAR

1.   此处 java 的所有类必须放在一个 Package 中,不要使用缺省的包,C#会找不到类之间的调用(C#貎似不能引用其它 dll 里的默认 namespace 里边的内容,所以 java 文件必须声明包,以便被转换成命名空间。此外,因为 java 中默认访问权限的方法会被转换成 internal 方法,所以在 java 中必须将这些方法显式地声明为 public),需要自己建,我用的是 eclipse,写完程序直接导出成 jar 文件。

另外现在这个版本好像不支持Java 图形界面,反正我调试时,一旦 new 一个控件,C#就说此方法未被实现什么的。

2.   也可以使用命令:jar cvf test.jar -C com/ .

其中 test.jar 为要生成的 jar 包;com/ . 为指定的当前目录下的文件夹,该文件夹包括子文件夹及 class 文件;

二、到 IKVM 官方网站下载 IKVM 需要的组件  http://www.ikvm.net/

ikvmbin-0.44.0.5.zip

三、设置路径

解压 ikvmbin-0.44.0.5.zip ,并将%IKVM_HOME%\bin 添加到 path 中。此处的%IKVM_HOME%是指解压后 ikvm 的主目录。

四、将 java 的 jar 包转换为.dll 控件

使用的命令:ikvmc -out:IKVM.dll test.jar  (整个操作这个是主要的。)

其中 IKVM.dll 为将要生成的.dll 控件文件名;test.jar(尽量添加上文件的路径)为之前打包好的 jar 包文件。(写的时候尽量添加文件的路径名称,便于查找生成后的 dll 文件 )

现在 dll 文件已经成功了但是不要激动。。。。后面还有运用这个 dll  在添加到C#项目中运行的时候 可能会报错。这些错误就是缺少一些 IKVMxxxx.dll 文件 这些文件都在    ikvm-0.46.0.1\bin 文件下可以找到。

五、在C#项目中添加所需的控件

1、新建一个C#.NET 项目,首先添加一下必须的 DLLs (references 中 Add reference,然后 Browse 找到 dll)

%IKVM_HOME%\bin\IKVM.OpenJDK.Core.dll

%IKVM_HOME%\bin\IKVM.Runtime.dll

%IKVM_HOME%\bin\IKVM.Runtime.JNI.dll

2、添加已生成的.dll 文件

将之前生成好的.dll 文件加载到 C#项目中

六、测试

在 C#项目中使用 java 类,其方法同 java。首先用 using 包名,这样才能找到类

 

 

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...