Jav a 调用C# DLL 的方法简介 By 潘伟 2012-8-7 关于java 调用C# 封装的DLL 文件的方法 第一种:java 利用JNA 进行调用 思路:C#源码生成COM 组件(dll 和tlb 文件),再利用C++进行封装,java 通过JNA 调用C++封装的DLL。 第二种:java 利用jacob 进行调用 第一种 jav a 利用 JNA 调用C# DLL 需安装Visual Studio 2010 ,下载jna.jar(解压放置于jdk_home/jre/lib/ext 目录下)。 第一步:利用C#写COM 组件 1、 新建一个类库项目(文件— 新建— 项目— 类库;命名:COMTest);//根据实际需要取文件名 2、 生成.cs 主文件 ; COMTestClass.cs 3、 右键点击工程->应用程序->程序集信息->使程序集 com 可见,打上勾 namespace COMTest { public interface COMTestIfce { int add(int a, int b); void say( string str); bool isCOM1(string portName); }; public class COMTestClass : COMTestIfce { public int add(int a, int b) { return a + b; } public void say(string str) { Console.WriteLine(str); } public bool isCOM1(string portName) { if (portName.Equals("COM1")) { Console.WriteLine("1true"); return true; } else { Console.WriteLine("2false"); return false; } } } } 4、 右键点击工程->生成->为 com Interop 注册 打上勾 5、 设置强签名 (由于.Net下编译的 COM 组件并等同于 C 编译的 COM 组件,所以存在必须在运行目标机器注册的情况,对此.Net下编译的 COM 组件必须为程序进行签名,即强命名密钥;) 打开 Visual Studio Command Prompt 输入:sn -k MyKeyFire.snk 生成 MyKeyFire.snk 文件,注意路径。(.snk 文件可以随意取,但.snk 后缀名别忘记了) 在签名 标签中选中 为程序集签名,选择刚刚生成的强名称文件 MyKeyFire.snk 。 6、 在“解决方案资源管理器”中找到节点“Properties”打开 AssemblyInfo.cs 文件 如下图 7、 将[assembly: ComVisible(false)] 属性改成[assembly: ComVisible(true)] 如下图 8、 编译程序,\bin\Debug 目录中会生成 COMTest.dll 和 COMTest.tlb 文件。 第二步:利用 C++进行再封装 1、 创建 C++ DLL 项目,新建项目->VC++->Win32 项目(名称:COMTest_Bridge)->下一步->应用程序类型:DLL...