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

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();    
              }   
    	
      }
}



 

你可能感兴趣的:(java,C#)