关于怎么用未管理代码调用受管理代码的问题(原创)

80酷酷网    80kuku.com

  问题|原创我只是想说一下用vb,或vc的createobject()
使用.net组件的问题步骤
1. 建立.net Classlibrary工程
   using System;

namespace ClassLibrary1
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1
    {
        public Class1()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public int Add(int i,int j)
        {
            int k=i+j;
            return k;
        }

    }
}

   
   用SN工具c:\sn -k key.snk生成密钥文件(为了以后编译为全局装配件)
   再在AssemblyInfo.cs中加入[assembly: AssemblyKeyFile("c:\key.snk")]
   编译为DLL(也就是所说的.net专用装配件)

2.我们要用RegAsm工具(.net自带的)注册带有COM的组件
  c:/regasm classlibrary1.dll
   将装配件清单的元数据输出到 系统注册表,
   已便Com services可以找到元数据
---这个操作在注册表中填加了一项
   (HKEY_LOCAL_MACHINE->software->classes->classlibrary1.class1目录)
   

3.当我们写出下面的代码时
    dim o
    set o=createobject("classlibrary1.class1")
    Call MsgBox(o.Add(57,4))
    将其保存为x.vbs

(   其中,classlibrary1是你要做的DLL的名字空间      
           class1是类(加在注册表中了)
    (哈哈,Add(int,int)方法当然要自己完成了!)

  (这个就是第一步和第二步要完成的了)

当我们执行上面的X.vbs文件时
   结果该弹出一个消息框的,上面写着Add()方法返回的结果
   -----如果正确,你成功了,但是(如果你真的按我的步骤做的的话,是不会对的了)
   
   因为com services还不能找到汇编文件

4. vb脚本函数在注册表中发现了需要的类
   但是要.net代码运行
   注册表项目要将Com Services重新只向.net代码
   也就是Com Services要找到.net代码
   那我们就要把我们的DLL做为全局装配件,放在c:/winnt/assembly目录下
   哈哈 ,我们就要学着怎么把我们做的DLL转成全局装配件了
  go!!!!!!!!
5.使用AL工具了
   不好意思了,到这我就不会了,没做完
   我会继续努力的
   希望那为能给于指点

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: