jni4net调用net库

本文详细介绍了如何使用jni4net工具将C#编译的DLL库转换为Java可调用的接口。首先,通过proxygen.exe生成目标DLL的Java绑定库,接着运行build.exe生成最终的DLL和JAR文件。然后,将所需库文件复制到Java项目中,并在Java代码中初始化jni4net并加载DLL。通过示例代码展示了如何调用C#DLL中的公共接口,为Java开发者提供了一种跨语言调用的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

步骤

1、先生成目标dll库(例如MesCommonLib.dll)
2、下载jni4net-0.8.8.0-bin, 在其bin目录下,控制台执行:

  • ./proxygen.exe .\MesCommonLib.dll -wd .\folder -cp .\dependence1.dll .\dependence2.dll
    • -wd 是指导输出目录
    • -cp 指定目标jar依赖的jar包,多个依赖用“;”号隔开。目标jar依赖的dll库用 空格隔开

3、在.\folder路径下双击build.exe,正常情况下会产生一个MesCommonLib.j4n.dll和一个MesCommonLib.j4n.jar
4、将jni4net.n-0.8.8.0.dll,Jni4NetDll.dll,jni4net.n.w64.v40-0.8.8.0.dll(四个全部),MesCommonLib.dll,MesCommonLib.j4n.dll等库及其依赖库复制到java项目根目录下
5、java项目添加jar包jni4net.j-0.8.8.0.jar,MesCommonLib.j4n.jar
6      java代码
        Bridge.setVerbose(true);
        Bridge.init();
        File loadDll = new File("MesCommonLib.j4n.dll");
        Bridge.LoadAndRegisterAssemblyFrom(loadDll);
        CBarcodePrinter test = new CBarcodePrinter(null);
7、测试

---------------------------------------------------------------------------------

 jni4net的帮助

输入:  .\proxygen.exe -h

jni4net.proxygen - Copyright (C) 2009 Pavel Savara - licensed under GPLv3

usage: proxygen.exe path\to\<config>.xml
usage: proxygen.exe path\to\<library>.jar -wd work\directory -cp java\dependencies;comma\separated;classpath -dp .NET\dependencies;comma\separated;assemblies
usage: proxygen.exe path\to\<library>.dll -wd work\directory -cp java\dependencies;comma\separated;classpath -dp .NET\dependencies;comma\separated;assemblies

参考

--------------------------------------------------------------------------------

使用命令备份:

要转换的目标的dll,以及依赖的dll,赋值到目录 jni4net-0.8.8.0-bin\bin\ 下,然后在此目录下cmd窗口执行如下命令,生成 folder_SI_1.3文件夹

.\proxygen.exe .\SusceptibilityIndexCalculation1.3.dll -wd .\folder_SI_1.3 -cp .\cairo.dll .\cfitsio.dll .\expat.dll .\freexl.dll .\fribidi.dll .\gdal202.dll .\gdalconst_csharp.dll .\gdalconst_wrap.dll .\gdal_csharp.dll .\gdal_wrap.dll .\geos.dll .\geos_c.dll .\hdf5.dll .\hdf5_cpp.dll .\hdf5_hl.dll .\hdf5_hl_cpp.dll .\hdfdll.dll .\iconv.dll .\libcurl.dll .\libeay32.dll .\libecwj2.dll .\libfcgi.dll .\libkea.dll .\libmysql.dll .\libpq.dll .\libtiff.dll .\libxml2.dll .\lti_dsdk_9.5.dll .\lti_lidar_dsdk_1.1.dll .\mapserver.dll .\mfhdfdll.dll .\msplugin_mssql2008.dll .\msplugin_oracle.dll .\msvcp140.dll .\NCSEcw.dll .\netcdf.dll .\ogr_csharp.dll .\ogr_wrap.dll .\openjp2.dll .\osr_csharp.dll .\osr_wrap.dll .\proj.dll .\spatialite.dll .\sqlite3.dll .\ssleay32.dll .\szip.dll .\tbb.dll .\vcruntime140.dll .\xdrdll.dll .\xerces-c_3_1.dll .\zlib1.dll .\Meta.Numerics.dll

生成的文件夹 folder_SI_1.3下,生成 两个文件:SusceptibilityIndexCalculation1.3.j4n.dll 和 SusceptibilityIndexCalculation1.3.j4n.jar

.\build.cmd

将 要转换的目标的dll、以及依赖的dll、SusceptibilityIndexCalculation1.3.j4n.dll、SusceptibilityIndexCalculation1.3.j4n.jar,复制到java项目的lib文件夹下,

在Java Build Path -> Libraries 中,点击 Add External JARS,  添加jar下面两个包:a. FrequencyRatiosCaculation.j4n.jar
b. jni4net.j-0.8.8.0.jar。使用如下代码即可调用c# dll中 public 的接口了


import net.sf.jni4net.Bridge;
import alsa.ALSACalSIConverter; # c# dll中 public的类
public class InvokeTest {
	
	public static void main(String ards[]) throws IOException
	{
		//invoke c# dll
        Bridge.setVerbose(true);
        Bridge.init();
        File loadDll = new File("lib/SusceptibilityIndexCalculation1.3.j4n.dll");
        Bridge.LoadAndRegisterAssemblyFrom(loadDll);
    
       //TODO something
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊鸿一博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值