步骤

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

参考

  • 如何使用jni4net实现java调用c#的dll
  • jni4net 实现 c# 调用 java jar包
  • jni4net调用net库

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

使用命令备份:

要转换的目标的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# dllBridge.setVerbose(true);Bridge.init();File loadDll = new File("lib/SusceptibilityIndexCalculation1.3.j4n.dll");Bridge.LoadAndRegisterAssemblyFrom(loadDll);//TODO something}
}

jni4net调用net库相关推荐

  1. linux下Qt调用C++库文件(.so)程序实现

    文章目录 主要内容 一.编程环境及实现方法 二.项目实现 1.创建项目 2.导入库文件 三.项目中遇到的问题 总结 主要内容 如标题所示,在linux下使用qtcreator创建项目调用C++库文件, ...

  2. Dictionary作为数据源绑定,调用c++库中返回为BYTE*的函数,listView项排序

    最近在做一个电子档案管理的项目.现在还处于初期,只是做一个简单demo拿去跟客户演示.至于最后谈不谈得下来,到底做不做,反正我是不看好,但没因为这样就马马虎虎.草草了事.这个项目算是b/s加c/s混合 ...

  3. .NET 调用c++库注意事项

    原文:.NET 调用c++库注意事项 很久没有更新了,主要还是因为自己懒吧,希望从今天开始坚持至少一周写一篇文章. 调用函数库是正常的,调用完成后,在使用EF进行数据更新时,将发生如下异常信息,而且几 ...

  4. python 调用 so 库 需要注意的地方

    2019独角兽企业重金招聘Python工程师标准>>> 使用C++而不是C来编写so库时往往会遇到一些问题,这里着重探讨一下linux环境下C++编写so库 及python调用so库 ...

  5. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )

    文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...

  6. 【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )

    文章目录 一.Windows 动态库简介 二.Visual Studio 调用动态库 一.Windows 动态库简介 在 C:\Windows\System32 目录中 , 存放着 Windows 中 ...

  7. linux用c++调用动态库

    1.3 用c++静态方式调用动态库libsthc.so: /*cpptest.cc*/    //linux下的c++后缀有cc,cxx, cpp #include "libsthc.h&q ...

  8. C#.net调用动态库dll注意事项

    C#.net调用动态库dll注意事项 本文主要描述作者在工作中所遇到技术难点及问题,最后提出相关的解决方案 场景 公司有个业务需求涉及到ID读卡器,构建成在ID卡读卡器一刷ID卡,系统就自动显示其ID ...

  9. ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2)

    ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 for iStep in ...

  10. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command) 目录 tkinter应用案例 1.添加菜单栏组件 2.tkinter应用案例:添 ...

最新文章

  1. ValueError: invalid literal for int() with base 10
  2. 2020年趋势一览:AutoML、联邦学习、云寡头时代的终结(附链接)
  3. windows tensorrt python
  4. linux下hg无法运行_千万不要运行的 Linux 命令
  5. 【直播预告 | 今天10:30】多媒体技术 PI 第一期:OSS圆桌
  6. 洛谷-P2801 教主的魔法 分块
  7. TurboIM专业集成即时通讯获新宠
  8. 大容量存储方案_助力卫星发射!威固提供自主固盘,满足载荷数据大容量存储能力...
  9. Tigase组件 – 配置API
  10. JUC之volatile
  11. 好的医疗器械管理软件应该具备哪些功能?
  12. C#实现简单的加密防止拷贝复制软件
  13. SAP ABAP BAPI_MATERIAL_AVAILABILITY 查询可用库存
  14. 谈cntv.cn的启用
  15. linux安装nebula
  16. 算法实验 01背包 暴力解法 java实现
  17. oracle按照姓名查询,Oracle 10g如何对用户姓名,按首字母排序、查询
  18. 数据中台、业务中台、数据仓库、现有信息架构
  19. pikachu Over permission 越权(皮卡丘漏洞平台通关系列)
  20. webpack对css文件打包:css-loader和style-loader版本过高问题

热门文章

  1. iPhoneiPod Touch定位编写
  2. Java中的指针---Unsafe应用解析
  3. Mysql 系统学习梳理_【All】
  4. 自动化测试selenium(四)check,选中复选框,操作一组元素
  5. 【iCore4 双核心板_ARM】例程十四:FATFS实验——文件操作
  6. IBM服务器诊断面板
  7. Eclipse—如何为Eclipse开发工具中创建的JavaWeb工程创建Servlet
  8. C# 在winform中如何为按钮设置快捷键( F1)
  9. 全网最好用的VS Code插件推荐
  10. 数据结构与算法之排序(冒泡、选择、插入、希尔、归并、快速)