好学IT学院:IT信息技术分享交流平台
标签:DLL  来源:互联网  作者:好学IT学院整理  发布时间:2009-07-05  ★★★加入收藏〗〖手机版
摘要:.NET的dll已经不是严格意义上的动态连接库了,而是一个类或者类库。我们可以通过COM包装器(COM callable wrapper (CCW))来将.net的dll再次包装,通过这个中间介质来实现相应的功能。…

【参考方案二】

动态联接库(DLL)可以加快应用程序关键部分的执行速度,同时通过统一的COM接口调用,对DLL的使用也可以最大限度地发挥组件的重用性。用户不必关心DLL采用什么语言编写,只需关注其提供了哪些功能及接口参数,便可以为我所用。

目前,基于.Net技术编写的DLL组件越来越多,而传统的ASP中如果也可以应用这些组件提供的功能,可以避免很多程序员无谓的劳动。最近本人在工作中需 要在ASP中调用.Net环境下生成的DLL,做过一些研究,特将自己的经验共享出来。其实都是很简单的东西,高手尽管嘲笑,呵呵~

1、在ASP中调用传统的ActiveX DLL

要想让COM能够“看到”你的组件,必须先将组件注册到注册表中:
regsvr32 mydll.dll
然后在ASP中创建对象:
set mydll= server.createobject("mydll.method")
mydll.method
这样就可以使用组件中的属性和方法了。

2、在ASP中调用基于.Net开发的 DLL

关于组件注册,一种方法是自动注册,在vs.net2003或2005的IDE环境中可以实现COM组件的自动注册,设置如下:项目名称->右键"属性"->配置属性->生成->选中"为Com Interop注册",编译即可。

另一种方法是手动注册:
regasm mydll.dll /tlb:mydll.tlb /CodeBase
注意CodeBase的使用,如果你要注册的.NET程序集没有强名称的话,那么在使用regasm注册的时候就要加上/CodeBase。

注册完毕,创建对象及使用方法与上面相同:
set mydll= server.createobject("mydll.method")
mydll.method

其实,不只是ASP,其他的COM程序(包括VBA、扩展存储过程等等)调用DLL的方法都是一样的。

有关于regasm的参数,请参考:
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cptools/html/cpgrfassemblyregistrationtoolregasmexe.asp

首先到这里看代码:  
  http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=35935

里面有两个方法  
   Encrypt(string  pToEncrypt,string  sKey)  //加密  
   Decrypt(string  pToDecrypt,string  sKey)  //解密

然后你这样写代码:

using System;
using System.Runtime.InteropServices;
namespace 名称空间
{
//首先建立接口,这个是Com必须使用的
[Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]
public interface IEncrypt
{
string Encrypt(string pToEncrypt,string sKey);
string Decrypt(string pToDecrypt,string sKey);
}

//写接口的实现
[Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
public class 类名称 : IEncrypt
{
public string Encrypt(string pToEncrypt,string sKey)
{
//复制FAQ加密代码
}

public string Decrypt(string pToDecrypt,string sKey)
{
//复制FAQ解密代码
}
}
}

然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll

然后用如下工具

regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb

这个.tlb文件就是类型库,可以由vb6和vc++6引用。

注意上面的guid是使用vs.net工具菜单里面的创建guid工具生成的。

还要注意,vs.net自动生成的assemblyinfo.cs文件中必须添加强名称和版本号,因为Com组件需要版本号,不要改动版本号,也不要用vs.net自动的1.*这样的版本号,最好使用1.1.1.1这样的固定版本,而且必须一次添加,不能多次添加。

  • 好学触屏公众号虎力全开、杨帆起航!
  • 四大名著全套小学生版注音版
  • 诗词中的科学全4册
  • 曹文轩系列儿童文学全套画本