C#创建和调用托管的DLL

本文详细介绍了如何在Visual Studio 2005环境下使用C#创建和调用托管DLL,包括创建类库、添加命名空间引用、调用方法等步骤。同时,文章也讲解了如何进行非托管DLL(如C++编写的)的调用,涉及平台调用(P/Invoke)、DllImport特性的使用以及数据封送处理等关键概念,通过示例展示了调用Windows API函数的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍利用 c# 创建和调用托管的 DLL 的方法和给出一个示例,采用的环境是 vs2005.

托管 DLL 的创建和调用

利用 vs2005 ,菜单,文件, c# 语言, window, 类库,代码如下:

using System;

using System.Collections.Generic;

using System.Text;

namespace Libary_Test

{

    public partial class Form1 : Form

     {

        public Form1()

        {

            InitializeComponent();

        }

        public void   Function()

        {

            MessageBox .Show(Class1 .Calc(10).ToString());

        }

 

        private void button1_Click(object sender, EventArgs e)

         {

            Function();

        }

    }

}

c# 当中,我们是以命名空间来来组织的,所以在在调用的时候也是一样,编译生成dll 文件。

在写一个示例的程序来调用它。

using Libary_Sample;

namespace Libary_Test

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        public void   Function()

        {

            MessageBox .Show(Class1 .Calc(10).ToString());

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            Function();

        }

}

 

 

上面是代码:我们有几步需要搞清楚。

1 把之前生成的dll 文件存放在我们的调用端的文件夹中,避免丢失。

2 添加引用,在解决方案里面添加对dll 的引用。

3 添加命名空间的引用using Libary_Sample.

 

       这样我们就完成了托管的 DLL 创建和调用!实际上可以理解相当于一个类的声明,只不过这里是以 dll 的形式,而非文件的形式!

 

 

非托管的调用:

       这个我们就是称之为调用外部的 DLL, 例如用 c++ 语言编写的。

首先我们需要声明一个本地的 DLL 实现方法。具体的是用参数 static extern 来声明方法,接着在声明前加上 DllImport 特性。

首先我们来详细的讲解下 DllImport 的特性和使用方法( MSDN , 在这里我们就是叫做平台调用( P/Invoke

DllImport() : 该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。

 

       下面给出一个例子来调用 Wind32 api 函数的例子。

using System.Runtime.InteropServices;

 

public class Win32 {

     [DllImport("user32.dll", CharSet=CharSet.Auto)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值