首页 > 开发 > 综合 > 正文

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

2024-07-21 02:24:22
字体:
来源:转载
供稿:网友


我只是想说一下用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工具了
   不好意思了,到这我就不会了,没做完
   我会继续努力的
   希望那为能给于指点

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表