用Visual C#做DLL文件

转载 2006年06月01日 16:54:00
作为软件设计和开发人员大都有过使用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

    编译完成,就会生成test.exe。执行此文件就会得到以下执行界面:


          图01:在客户端制作调用DLL的应用程序执行界面

    五.总结:

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

相关文章推荐

用Visual C#做DLL文件

  • 2008-11-26 14:55
  • 32KB
  • 下载

【C#】Visual C# 生成DLL文件 --转

预备知识         DLL(Dynamic Link Library)文件即动态链接库文件,是一种可执行文件,允许程序共享执行特殊任务所必需的代码和其他资源。多数情况下带有dll扩展名(也可...

如何用Visual C#生成DLL文件

  • 2014-03-06 09:49
  • 26.02MB
  • 下载

visual c#中调用visual c++ 编译的cxform.dll问题总结

1.调用bat自动生成的cxform-c.dll库的结果最近有一个项目,收到“J2000”的坐标要转换为“GEO”格式显示,不同坐标系之间的转换,网上已经有现成的源代码了,源代码叫做cxform,百度...

如何使用 Visual C# 加密和解密文件

本文介绍如何使用 Microsoft .NET Framework 提供的加密类对文本文件进行加密以使其处于不可读状态,然后再对该信息进行解密,以恢复到原来的格式。 转自http://suppo...

Visual C# 操作 Excel 文件(三) 對圖片的存取

要插入圖片到 Excel 中,就要用到以下的方法: Sheet.Shapes.AddPicture(FileName,LinkToFile,SaveWithDocument,Left, Top...

如何使用 Visual C# 加密和解密文件

本文引入的命名空间:   System.IOSystem.SecuritySystem.Security.Cryptography    本文介绍如何使用 Microsoft .N...

HOW TO:使用 Visual C# .NET 从文件中读取 XML

本文描述如何使用 XmlTextReader 类从文件读取可扩展标记语言 (XML)。 XmlTextReader 可对 XML 直接进行语法分析和标记,并且实施了 XML 1.0 规范以及 ...

Visual C#(流与文件)

1.流的概述 流是字节序列的抽象概念,如文件、输入输出设备、内部进行通信的管道、TCP/IP套接字等。流常用的三个基本操作如下:读取流、写入流、查找。 Read和Write方法支持读写不同格式的数...
  • tofro
  • tofro
  • 2012-01-01 00:13
  • 216

Visual C# 操作 Excel 文件(二) 封裝成 MyExcel 類

上一篇介紹 Excel 的基本操作,煩瑣的程式碼,是不是令人心煩? 良好的類設計能使系統結構更加清晰,並可加強代碼的復用性和易維護性,減少開發的工作量。有鑑於此,我規劃了一個 MyExcel類,用于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)