java调用c# com组件编码过程笔记

来源:互联网 发布:淘宝摄影布光 编辑:程序博客网 时间:2024/06/05 06:01

1.创建环境:vs2012 win7 java1.6

2.步骤:

(1);创建一个类库项目RemoteCom,进入项目属性,在应用程序的程序集选项中设置使用程序集com可见

(2);在生成选项中选中为com互操作注册

(3);打开vs的command prompt命令行客户端,输入sn -k remoteAppKey.snk生成签名文件,默认生成在vs安装目录下的vc文件夹中

(4);打开签名选项,选择为程序集签名,选中浏览找到上一步生成的签名文件

(5);c#代码

using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;namespace RemoteCom{    [Guid("BD6B85B2-CB93-49E1-8946-9ECC95B9A57B")]    public class AppConnect    {        public AppConnect(){}        public string ConnectToApp(string str, string str2)        {            Console.WriteLine("测试com组件");            return "测试: " + str + " | " + str2;            }    }}

在工具中选择生成Guid将生成的GUID复制到代码的相应位置

(6);右击项目选择生成

(7);进入项目的Dbug目录,复制.dll和.tlb两个文件,复制到java的开发环境的bin目录

(8);打开command prompt为程序集注册,输入命令regasm RemoteCom.DLL /tlb:RemoteCom.tlb为程序集注册

(9);java代码

public class TestCom {      public static void main(String[] args){     try{                  ActiveXComponent dotnetCom = null;                  dotnetCom = new ActiveXComponent("RemoteCom.AppConnect");     //需要调用的C#代码中的命名空间名和类名。              Variant var = Dispatch.call(dotnetCom,"ConnectToApp","juxinli\\xinhao","Info201311");   //需要调用的方法名和参数值              String str  = var.toString();  //返回需要的字符串                  System.out.println(str);  //输出得到的字符串。检查结果是否正确。              } catch (Exception ex) {                      ex.printStackTrace();                  }             }}