您的位置:首页 > 编程语言 > ASP

ASP、VB调用.NET编写的DLL

2012-07-30 16:10 411 查看
.NET中的DLL不是动态链接库,而是一个类型库。要把它作为COM调用需要进行CCW。下面是一个实例。
首先建立一个类库的项目comLib之后编写一个接口,COM要调用的对象实现这个接口,和一个实现这个接口的类,如果要在VB或ASP中用CreateObject创建对象需要有一个没有参数的构造函数
。代码如下:
[align=left][/align]

[align=left]using System;[/align]
[align=left]using System.Windows.Forms;[/align]
[align=left][/align]
[align=left]namespace comLib[/align]
[align=left]{[/align]
[align=left] //定义接口,这点很重要 (此接口中的方法与COM组件中的方法一致)[/align]
public
interface iClass1
[align=left] {[/align]
[align=left] void Say(string word);[/align]
[align=left] }[/align]
[align=left][/align]
public
class Class1 :
iClass1
[align=left] {[/align]
public
void Say(string word)
[align=left] {[/align]

MessageBox.Show(word);
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left][/align]
然后运行运行Visual Studio 2005 .net
命令提示符,执行sn –k comLib.snk,生成一个SNK签名文件comLib.snk。
[align=left][/align]
为了使类型在COM中可见需要在AssemblyInfo.cs文件中设置这么一项[assembly:
ComVisible(true)]。在些文件中添加一项[assembly:
AssemblyKeyFile("文件路径\\comLib.snk")]

在解决方案资源管理器中选择工程->单击右键->选择”属性”->选择”生成”选项卡->将”为COM
Interop注册”选中,这样项目造成时就会自动注册COM组件。
[align=left][/align]

生成项目后,就可以进行COM调用了。这里以VB为例,新建一个EXE工程,添加对comLib.tlb的引用,些文件在bin目录下。然后使用下面的代码调用

[align=left]Option Explicit[/align]
[align=left][/align]
[align=left]Private Sub Form_Load()[/align]
[align=left] Dim ic As iClass1[/align]
[align=left] Set ic = New Class1[/align]
[align=left] ic.Say "Hello Jerry!"[/align]

[align=left] '在ASP中要用这种方式[/align]
[align=left] Dim a[/align]
[align=left] Set a = CreateObject("comLib.Class1")[/align]
[align=left][/align]
[align=left]End Sub[/align]
运行工程后就会出现个消息框。说明调用成功。
[align=left][/align]

上面的COM注册是自动注册但有些时候要手动注册,比如你做的类型库要在别的计算机上使用,耍那台计算机没有Visual Studio 2005。手动注册有以下几个步骤:
[align=left][/align]
(1)
使用regasm工具对程序集进行注册,运行Visual Studio 2003 .net
命令提示,执行regasm comLib.dll /tlb:comLib.tlb

(2) 之后使用gacutil工具将DLL程序集安装到全局程序集缓存中,也是先运行Visual
Studio 2003 .net 命令提示,再执行gacutil /i comLib.dll

原文地址:/article/6248676.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: