动态链接库入门

动态链接库初探

      这几天由于项目原因,初次接触动态链接库,后在网上查了下,了解到要深入理解动态链接库(涉及到反射机制等),要花很大的精力,里面的水很深!故作为初学者,我也只是略微学习下基础的要用的操作,至于更高深的东西,等以后再次用到再细究。下面切入正题。
       首先大概讲下dll文件的由来(由于我初次学习的时候就碰到这个问题,当时总是纠结这个dll怎么生成的,用了什么函数?)。要写dll,我们首先要建立一个类库(VS2010),然后再里面写入方法,编译之后就能在项目中找到dll文件,dll文件一般是打不开的哦!除非用特殊的软件。有人会问,那要是要调试的时候怎么办呢,呵呵,这时,你就可以通过调试进入dll文件,看到它里面的内容哦!有了dll文件,我们怎么用呢?这时我们就要封装一个类,通过这个类中的函数来调用dll文件。我们只需调用这个类函数,传入参数即可了。呵呵,现在是不是感觉入门很简单,下面我给出个用控制台调用的dll例子。
      1.用VS2010新建一类库项目,代码如下
       
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClassLibrary3
{
    public class Class1
    {
        public int add(int a,int b)  
        {
            int c = a + b;
            return c;
        }
    }
}
     2.在该解决方案下新建一控制台程序,并现在该程序的引用文件夹中引用步骤1创建的类库命名空间(另外在代码中还要再次添加其命名空间哦)。代码如下
using System;
using System.Linq;
using System.IO;
using ClassLibrary3;        //使用其命名空间
using System.Reflection;   

namespace ConsoleApplication1
{
    class Program
    {
       static void Main(string[] args)   //主函数调用dll
       {
           int a = 4, b = 5,c;
           Assembly ass;
           Type type;
           object obj;
           ass = Assembly.LoadFrom(@"C:\xxxx\Visual Studio 2010\Projects\ClassLibrary3\ClassLibrary3\bin\Debug\ClassLibrary3.dll");

           type = ass.GetType("ClassLibrary3.Class1");   //获取类型,dll库"命名空间.类名"
           MethodInfo MI = type.GetMethod("add");    //获取待调用dll的方法名
           obj = ass.CreateInstance("ClassLibrary3.Class1");   //创建实例,dll库"命名空间.类名"
           object[] postedParams = new object[] { a,b };    //传递参数
           c=(int)MI.Invoke(obj, postedParams);      //调用dll
           Console.Write(c);
           Console.ReadKey();
           
       }
    }
}

在VS2010中能够编译通过! 最后欢迎各位大牛指正交流!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值