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