关于怎么用未管理代码调用受管理代码的问题(原创)
我只是想说一下用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工具了
不好意思了,到这我就不会了,没做完
我会继续努力的
希望那为能给于指点