zoukankan      html  css  js  c++  java
  • 用Visual C#做DLL文件(转)

     作为软件设计和开发人员大都有过使用DLL(动态连接库)的经历,DLL的产生使得我们的应用程序在可维护性、代码的重复使用等方面都有了很大的提高。以前用的DLL一般都是用Visual C++、Delphi或者VB等编程语言来编写的,这种DLL的编写和使用,我们大都已经比较习惯了。作为新一代的程序开发语言--Visual C#,到底是如何编写和使用DLL的呢!本文就试着就这方面的问题来进行简单的介绍。

      Visual C++、Delphi或者VB等编程语言来编写成的DLL文件,在编译完成过以后,产生DLL文件已经是一个可以直接供计算机使用的二进制文件。但用Visual C#编译器生成的受管代码(managed code)虽然也是二进制文件,但不是可以直接供计算机使用的原始代码(机器语言代码)。他实质上是一种中间语言(IL)代码,这种IL代码要转变成可以供计算机直接使用的原始代码,就需要经过"下一代窗口服务"( Next Generation Windows Services,简写为NGWS ) runtime的即时编译器(即JIT)进行编译。

      经过以上比较,我们可以看出,用Visual C#生成的DLL文件已经和以前的DLL文件有了本质上的区别。用Visual C#生成的DLL文件在程序设计中更多的表现为一种类(Class)或者类库(Class Library)。本文就试着通过一个具体程序的例子,按照下面步骤来具体介绍:

      (1).创建一个DLL源代码。

      (2).编译此DLL源代码,生成DLL文件。

      (3).用此DLL来创建一个简单的客户端程序

      一. 程序设计开发及运行环境:

      (1).微软视窗2000专业版

      (2)..Net FrameWork SDK Beta 2

      二. 创建一个DLL源代码(dll.cs)

      由于用Visual C#创建的DLL,此DLL是不需要执行的界面,所以在DLL文件就没有必要定义Main ( )函数,来作为应用程序执行的入口。Dll.cs的源程序代码如下:

      Dll.cs:

    namespace Dll file://定义了名称空间,在调用DLL的时候就要导入此名称空间。
    {
      public class Show file://定义了一个类,在程序中就要来继承此类。
      { 
       public string Messages ( )
       file://定义了一个方法,此方法的作用就是返回下面字符串。
       {
        return "欢迎使用Visual C#做的DLL文件!" ;
       }
      }
    }

      通过此DLL的源程序可以看出,此DLL表现为一个小型的类库,这是因为在此DLL中封装了名字叫DLL的名称空间,在此名称空间中又定义了一个Show类,在此类中有一个方法就是Messages。虽然定义的内容相对少了些,但却相当完全。

      三. 编译此DLL源代码,生成DLL文件

      要把DLL源代码编译成DLL文件,就需要配置好编译器Csc.exe的参数和开关。我们知道编译器Csc.exe可以把源代码编译成四种不同的文件,分别是控制应用程序、代码库、windows应用程序、模块程序。编译命令具体如下:

    csc /target:exe myProj.cs // 创建一个myProj.exe控制程序
    csc /target:winexe myProject.cs file://创建一个myProj.exe的windows程序
    csc /target:library myProject.cs file://创建一个myProj.dll代码库
    csc /target:module myProject.cs file://创建一个myProj.dll模块

      对于如何配置编译器Csc.exe的其他参数和开关,可以参考稍前发表的文章《如何用CSC.exe来编译Visual C#的代码文件》,在此篇文章里面有比较详细的介绍。通过以下编译命令可以得到mydll.dll文件:

    Csc /r:system.dll /t:library /out:mydll.dll dll.cs

      四.用此DLL来创建一个简单的客户端程序(test.exe)

      通过以上的源程序代码可以看到生成的mydll.dll文件虽然是一个以DLL为扩展名,实际上是一个类库,和我们经常用到的System.dll、System.Windows.Forms.dll等这些文件相似。同样用mydll.dll创建程序也和用以上这些类库创建程序相类似。就是第一步就是导入此名称空间--Dll。然后在去继承里面封装好的类--Show,再调用类中定义好的方法--Messages。下面就是按照以上的步骤,创建的客户端的源程序代码( test.cs ) :

    test.cs:
    using Dll ; // 导入此名称空间
    using System ;

    public class GetMessage
    {
      public static void Main ( )
      {
       Show hi = new Show ( ) ; // 继承名称空间中定义的Show类
       Console.WriteLine ( hi.Messages ( ) ) ; // 调用此类中的方法
      }
    }

      在把test.cs编译成执行程序中,要在编译命令中添加一个引用,就是引用mydll.dll文件。具体的编译命令如下:

    csc /r:mydll.dll /r:system.dll test.cs

      五.总结:

      通过此篇文章,可以看出用Visual C#制作一个DLL其实并不是一件很复杂的事件,但对DLL的调用却和以往有了较大区别,其中最主要的原因是,用Visual C#或者其他.Net 程序开发语言制作的DLL和以前的DLL有了实质上的区别。它已经不是严格意义上的动态连接库了,而是一个类或者类库。

    出处:http://www.programbbs.com/doc/527.htm

  • 相关阅读:
    vue开发chrome扩展,数据通过storage对象获取
    Vue手动集成less预编译器
    Google Translate寻找之旅
    Javascript Range对象的学习
    Javascript Promises学习
    SublimeText 建立构建Node js系统
    We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.
    npm安装包出现UNMET DEPENDENCY报错
    (转载)命令行说明中格式 尖括号 中括号的含义
    Linux重启网卡服务Failed to start LSB: Bring up/down networking.
  • 原文地址:https://www.cnblogs.com/373419157/p/1621160.html
Copyright © 2011-2022 走看看