ASP、VB调用.NET编写的DLL
2007-06-12 22:29
621 查看
[align=center]ASP、VB调用.NET编写的DLL [/align]
[align=left] .NET中的DLL不是动态链接库,而是一个类型库。要把它作为COM调用需要进行CCW。下面是一个实例。[/align]
[align=left]首先建立一个类库的项目comLib之后编写一个接口,COM要调用的对象实现这个接口,和一个实现这个接口的类,如果要在VB或ASP中用CreateObject创建对象需要有一个没有参数的构造函数 。代码如下:[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]然后运行运行Visual Studio 2005 .net 命令提示符,执行sn –k comLib.snk,生成一个SNK签名文件comLib.snk。[/align]
[align=left] [/align]
[align=left] 为了使类型在COM中可见需要在AssemblyInfo.cs文件中设置这么一项[assembly: ComVisible(true)]。在些文件中添加一项[assembly: AssemblyKeyFile("文件路径//comLib.snk")][/align]
[align=left] [/align]
[align=left] 在解决方案资源管理器中选择工程->单击右键->选择”属性”->选择”生成”选项卡->将”为COM Interop注册”选中,这样项目造成时就会自动注册COM组件。[/align]
[align=left] [/align]
[align=left] 生成项目后,就可以进行COM调用了。这里以VB为例,新建一个EXE工程,添加对comLib.tlb的引用,些文件在bin目录下。然后使用下面的代码调用[/align]
[align=left] [/align]
[align=left] 运行工程后就会出现个消息框。说明调用成功。[/align]
[align=left] [/align]
[align=left] 上面的COM注册是自动注册但有些时候要手动注册,比如你做的类型库要在别的计算机上使用,耍那台计算机没有Visual Studio 2005。手动注册有以下几个步骤:[/align]
[align=left] [/align]
[align=left](1) 使用regasm工具对程序集进行注册,运行Visual Studio 2003 .net 命令提示,执行regasm comLib.dll /tlb:comLib.tlb
(2) 之后使用gacutil工具将DLL程序集安装到全局程序集缓存中,也是先运行Visual Studio 2003 .net 命令提示,再执行gacutil /i comLib.dll[/align]
更多黄瑞杰的文章
[align=left] .NET中的DLL不是动态链接库,而是一个类型库。要把它作为COM调用需要进行CCW。下面是一个实例。[/align]
[align=left]首先建立一个类库的项目comLib之后编写一个接口,COM要调用的对象实现这个接口,和一个实现这个接口的类,如果要在VB或ASP中用CreateObject创建对象需要有一个没有参数的构造函数 。代码如下:[/align]
[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] [align=left] public interface iClass1[/align] [align=left] {[/align] [align=left] void Say(string word);[/align] [align=left] }[/align] [align=left] [/align] [align=left] public class Class1 : iClass1[/align] [align=left] {[/align] [align=left] public void Say(string word)[/align] [align=left] {[/align] [align=left] MessageBox.Show(word);[/align] [align=left] }[/align] [align=left] }[/align] [align=left]}[/align] |
[align=left]然后运行运行Visual Studio 2005 .net 命令提示符,执行sn –k comLib.snk,生成一个SNK签名文件comLib.snk。[/align]
[align=left] [/align]
[align=left] 为了使类型在COM中可见需要在AssemblyInfo.cs文件中设置这么一项[assembly: ComVisible(true)]。在些文件中添加一项[assembly: AssemblyKeyFile("文件路径//comLib.snk")][/align]
[align=left] [/align]
[align=left] 在解决方案资源管理器中选择工程->单击右键->选择”属性”->选择”生成”选项卡->将”为COM Interop注册”选中,这样项目造成时就会自动注册COM组件。[/align]
[align=left] [/align]
[align=left] 生成项目后,就可以进行COM调用了。这里以VB为例,新建一个EXE工程,添加对comLib.tlb的引用,些文件在bin目录下。然后使用下面的代码调用[/align]
[align=left] [/align]
[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] [/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]
[align=left] 上面的COM注册是自动注册但有些时候要手动注册,比如你做的类型库要在别的计算机上使用,耍那台计算机没有Visual Studio 2005。手动注册有以下几个步骤:[/align]
[align=left] [/align]
[align=left](1) 使用regasm工具对程序集进行注册,运行Visual Studio 2003 .net 命令提示,执行regasm comLib.dll /tlb:comLib.tlb
(2) 之后使用gacutil工具将DLL程序集安装到全局程序集缓存中,也是先运行Visual Studio 2003 .net 命令提示,再执行gacutil /i comLib.dll[/align]
更多黄瑞杰的文章
相关文章推荐
- ASP、VB调用.NET编写的DLL (补充:附上源文件)
- ASP、VB调用.NET编写的DLL
- 在vb和asp中调用c#生成的.net的dll,详细步骤、截图和代码
- VB调用.Net编写的DLL组件示例
- 在vb和asp中调用c#生成的.net的dll
- [转] 在vb和asp中调用c#生成的.net的dll
- 在ASP 调用 VB.net 编写的dll 出错 提示:Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象
- vb编写dll组建,并在asp中调用的例子
- 在vb和asp中调用c#生成的.net的dll,详细步骤、截图和代码
- ASP调用.Net编写的动态库(DLL)
- VS2010开发——vc++项目编写DLL提供vb.net调用
- [VB.NET]VB6能调用VB.net编写的DLL么?
- 使用QT+MinGW编写动态库dll供VC或VB调用
- 用VB编写ActiveX DLL实现ASP编程
- 如何用VB编写自己的DLL文件,并调用其中的函数
- asp调用C#编写的DLL发送邮件
- asp.net mvc 调用C++编写的64位的dll引发System.BadImageFormatException
- 使用.NET2.0编写COM组件供VB调用
- 如何在Delphi中调用.Net编写的DLL中的函数(Function)、过程(Procedure)
- C语言编写DLL动态链接库并分别用VB和Python调用